Foros del Web » Programando para Internet » PHP »

envío de e-mails en un WHILE con Phpmailer

Estas en el tema de envío de e-mails en un WHILE con Phpmailer en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/08/2012, 04:50
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta envío de e-mails en un WHILE con Phpmailer

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. De momento me envía sólo 1 e-mail (el que corresponde al primer campo) y la última parte del Update tampoco la realiza (sí lo hacía con el IF).
Éste es el código, algo poco complejo, 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());
require(
"class.phpmailer.php");
$mail = new PHPMailer(); 
while(
$reg=mysql_fetch_array($registros))
{
$mailu=$reg['mail'];
$namee=$reg['name'];
$password=$reg['password'];
$codigo=$reg['codigo'];
$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=$yep+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. La verdad es que me haría feliz poder enviar e-mails con WHILE.
Bueno, agradecería un cable.

¡Un saludo!
  #2 (permalink)  
Antiguo 24/08/2012, 05:28
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 8 meses
Puntos: 58
Respuesta: envío de e-mails en un WHILE con Phpmailer

Prueba haciendo un var_dump de $registros aver si es que realmente sólo hay una tupla. Yo no veo nada raro ni tampoco soy muy amigo de los While. Pero a veces el problema no está donde pensamos.
  #3 (permalink)  
Antiguo 24/08/2012, 16:36
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: envío de e-mails en un WHILE con Phpmailer

Hola alyciashape,

Gracias por contestar. Esto es lo que he hecho (nunca había utilizado antes var_dump):

Código PHP:
Ver original
  1. echo var_dump($registros)."<br />";
  2. echo var_dump($registros2)."<br />";
  3. echo var_dump($registros3)."<br />";

Y éste es el resultado:
Código PHP:
Ver original
  1. resource(8) of type (mysql result)
  2. resource(14) of type (mysql result)
  3. bool(true)

La verdad es que no sé cómo interpretarlos, en qué me pueden ayudar.
  #4 (permalink)  
Antiguo 25/08/2012, 17:18
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: envío de e-mails en un WHILE con Phpmailer

he detectado una causa, y es que en el if(...) del $registros2, tengo que poner :

if($reg=mysql_fetch_array($registros2))

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

Etiquetas: e-mails, html, mysql, phpmailer, registro, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:04.