Comunidad de diseño web y desarrollo en internet online

envío de e-mail con Phpmailer a través de un WHILE (con IF me funciona

Citar            
MensajeEscrito el 23 Ago 2012 11:10 pm
Hola, muy buenas.
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!

Por sharinglanguage

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Ago 2012 03:30 am
No estoy al cien segura, pero saca

require("class.phpmailer.php");
$mail = new PHPMailer();

Del while

Por FabVale

26 de clabLevel



Genero:Femenino  

Programador web, SEO

chrome
Citar            
MensajeEscrito el 24 Ago 2012 10:27 am
Hola FabVale, pues muchas gracias por contestar.
He hecho lo que dices, a lo que veo mucho sentido además, pero me funciona a medias.
Tengo dos campos a los que habría que enviar el e-mail pero sólo lo envía a uno (el primero), y encima la última parte (con el Update) ya no la hace, cuando con el IF sí que lo hacía.
¡Siempre me pasa algo con los WHILE y PhpMailer! :( :(

p.d En la última parte, donde pone: $saw=Syep+1; , realmente es: $yep+1

¡Un saludo!

Por sharinglanguage

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Ago 2012 11:11 pm
he detectado una causa, y es que en el if(...) del $registros2, tengo que poner :

if($reg=mysql_fetch_array($registros[COLOR="Red"]2[/COLOR]))

Con la primera prueba al menos, ha funcionado...

Por sharinglanguage

21 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.