Tengo un problema para enviar emails a través de una llamada a la base de datos con un While.
Si hago lo que voy a poner ahora pero con If en lugar de While, sí me funciona. Pero no sé porqué no me funciona con el While. Encima no me da error.
Éste es el código, algo básico, yo creo:
Código PHP :
... include('conexioninclude.php'); mysql_set_charset('utf8'); $registros=mysql_query("SELECT mail, name, password, codigo FROM alert WHERE status='on' AND language1='$language2' AND language2='$language1' AND way LIKE '%$way%' ORDER BY codigo",$conexion)or die("Problems at selectt:".mysql_error()); while($reg=mysql_fetch_array($registros)) { $mailu=$reg['mail']; $namee=$reg['name']; $password=$reg['password']; $codigo=$reg['codigo']; require("class.phpmailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Port = 465; $mail->SMTPSecure = "ssl"; $mail->Host = "smtp.gmail.com"; $mail->SMTPAuth = true; $mail->Username = "xxxxx"; $mail->Password = "xxxxxx"; // SMTP password $webmaster_email = "xxxxxx"; //Reply to this email ID $email="xxxxx"; // Recipients email ID $name="Admin"; // Recipient's name $mail->From = "xxxxxx"; $mail->FromName = "Sharinglanguage.com"; $mail->AddAddress($mailu,$namee); $mail->AddReplyTo(xxxxxx,"Webmaster"); $mail->WordWrap = 50; // set word wrap $mail->SetLanguage("en","/php/language/"); $mail->AddAttachment("/var/tmp/file.tar.gz"); $mail->AddAttachment("/tmp/image.jpg", "phone.jpg"); $mail->AddAttachment("image.jpg", "phone.jpg"); $mail->IsHTML(true); // send as HTML $mail->Subject = "xxxxxxxxx"; $foto= "imagess/bonito.jpg"; $mensaje='<font-color="#559999"> <img src="'. $foto .'" width="600"><br /><br /> Hello '.$namee.',<br /><br /> xxxxxxxxxxxxxxxx .<br /><br /> Sincerely yours</font>'; $mail->MsgHTML($mensaje); if(!$mail->Send()) { print<<<HERE message wasn't sent; HERE; } else { $registros2=mysql_query("SELECT yep FROM vamos WHERE password='$password'",$conexion)or die("Problems at selectt:".mysql_error()); if($reg=mysql_fetch_array($registros)) { $yep=$reg['yep']; // se trata de un campo tipo INT $saw=Syep+1; $registros3=mysql_query("UPDATE vamos SET yep='$saw' WHERE password='$password'",$conexion)or die("Proble8uhims with selectttt:".mysql_error()); } print<<<HERE success!; HERE; } ...
Como decía, con IF funciona bien (además he usado el mismo script de phpmailer en muchas ocasiones antes y lo sigo usando y funciona bien), por lo que supongo que el fallo está en cómo codifico el While, pero no lo pillo, y eso que he usado scripts parecidos muchas veces. He de decir que mi tendencia con el tiempo ha sido la de intentar usar IF para el envío de e.mails pq con el WHILE termino teniendo problemas. Puede que haya algo (bastante básico o fundamental) que se me escapa.
Bueno, agradecería un cable.
¡Un saludo!