Estoy preparando un codigo para ejecutarlo como tarea programada y que envie 10 emails a la hora ( por probar), el bucle lo que hace es cargar los datos extaridos de la base de datos, enviar el email y marcar en la tabla de la base de datos como enviado.
Código PHP :
$i=0 while($user1=mysql_fetch_array($query_user1)){ $consulta_estado = "UPDATE hoja1 SET enviado = true WHERE email = '".$user1["email"]."'"; $query_estado = mysql_query($consulta_estado, $conectar); $mail = new PHPMailer(); $mail->IsHTML(true); $mail->IsSMTP(); $mail->SMTPAuth = true; // True para que verifique autentificación de la cuenta o de lo contrario False $mail->Username = "[email protected]"; // Cuenta de e-mail $mail->Password = "pass"; // Password $mail->Host = "smtp.email.com"; $mail->From = "[email protected]"; $mail->FromName = "Prueba"; $mail->Subject = "Asunto_prueba"; $mail->WordWrap = 50; $mail->AddAddress ($user1["email"],$user1["nombre"]." ".$user1["apellidos"]); echo $user1["email"]."<br>"; $body = $file; $mail->Body = $body; $mail->Send(); if($i==10){ exit(); } $i++; } echo $i; ?>
Casi todo lo hace bien pero hay un problema, siempre deja 1 registro sin marcar como enviado en la base de datos.
Otra cosa, ¿Se podría optimizar el bucle?, es decir sacar parámetros del phpmailer.
Un Saludo.