Foros del Web » Programando para Internet » PHP »

Problema con PHPMailer

Estas en el tema de Problema con PHPMailer en el foro de PHP en Foros del Web. Hola a todos. Tengo un problema con la clase PHPMailer que seguro es muy facil de resolver, pero soy un poco novato. Tengo que mandar ...
  #1 (permalink)  
Antiguo 08/03/2006, 10:30
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 3 meses
Puntos: 0
Problema con PHPMailer

Hola a todos. Tengo un problema con la clase PHPMailer que seguro es muy facil de resolver, pero soy un poco novato.
Tengo que mandar un mail a unos 4000 usuarios. El codigo que uso es este:

for ($j=0; $j!=$num_usu; $j++){
$email = pg_result($resu,$j,'email');

require "class.phpmailer.php";
$mail = new phpmailer();
$mail->PluginDir = "./";
$mail->Mailer = "smtp";
$mail->Host = "IP";
$mail->SMTPAuth = true;
$mail->Username = "user";
$mail->Password = "pass";
$mail->From = "user@dominio";
$mail->FromName = "Prueba";
$mail->Timeout=30;
$mail->Subject = "Hola cocacola";
$mail->Body = $boletin_new;
$mail -> IsHTML(True);
$mail->AddAddress($email);
$exito = $mail->Send();
if(!$exito)
{
echo "Problemas enviando correo electronico a $email";
echo "<br/>".$mail->ErrorInfo;
}
}


El problema es que al primero le llegan todos los correos, al segundo todos menos uno... y asi hasta el ultimo que le llega solo uno. El problema esta en $mail->AddAddress($email), que "concatena" todas las direcciones, pero no se com ohacer para "reiniciarla" o borrar su contenido cada vez que vaya a enviar un correo.
A ver si un alma piadosa me echa un cable.
Muchas gracias a todos.
  #2 (permalink)  
Antiguo 09/03/2006, 05:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El caso es que metistes en el bucle que usas (for()) toda la definición de la classe y el método que "acomula" direcciones de correo para el destinatario ($mail->AddAddress($email);)

También te faltó el método:
$mail->ClearAddresses();

que limpia todo lo que tenga acomulado hasta el momento .. Como en tu caso a cada pasada del bucle generas y envias un e-mail, debes aplicar ese método al final del proceso (del envio).


Deberías hacer:
Código PHP:
<?
require "class.phpmailer.php";
$mail = new phpmailer();
$mail->PluginDir "./";
$mail->Mailer "smtp";
$mail->Host "IP";
$mail->SMTPAuth true;
$mail->Username "user";
$mail->Password "pass";
$mail->From "user@dominio";
$mail->FromName "Prueba";
$mail->Timeout=30;
$mail->Subject "Hola cocacola";
$mail->Body $boletin_new;
$mail -> IsHTML(True);


for (
$j=0$j!=$num_usu$j++){
$email pg_result($resu,$j,'email');

$mail->AddAddress($email);
$exito $mail->Send();

   if(!
$exito)
   {
     echo 
"Problemas enviando correo electronico a $email";
     echo 
"<br/>".$mail->ErrorInfo;
   }

  
// Eliminas los e-mails que tengas acomulados.
 
$mail->ClearAddresses();

}
Un saludo,
  #3 (permalink)  
Antiguo 09/03/2006, 08:46
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 3 meses
Puntos: 0
10 mil millones de gracias, funciona perfectamente. No sabia que existiera ese metodo y no se me ocurio mirarlo en el codigo de la clase. Las desventajas de ser un pardillo...
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 08:59.