Foros del Web » Programando para Internet » PHP »

problema con envio masivo de email

Estas en el tema de problema con envio masivo de email en el foro de PHP en Foros del Web. buen dia. implemente la libreria PHPMailer en un proyecto de sistema de registro de concursantes grupal. el formulario de input text lo genero con un ...
  #1 (permalink)  
Antiguo 17/01/2012, 10:13
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta problema con envio masivo de email

buen dia. implemente la libreria PHPMailer en un proyecto de sistema de registro de concursantes grupal. el formulario de input text lo genero con un bucle for. yo envio 2 correos y al hacer el proceso, me muestra el siguiente error.

Invalid address: [email protected], [email protected], .You must provide at least one recipient email address.

eso se debe a que le estoy enviando 2 correos. ya que en el formulario el bucle que realizo me genera 3 input text.

Código PHP:
Ver original
  1. <?php
  2.     for($n=1;$n<=3;$n++){
  3. ?>  
  4. <tr>
  5.   <td>Email <?php echo $n; ?></td>
  6.   <td><input name="email[]" type="text" id="email" size="30" /></td>
  7. </tr>
  8. <tr>
  9.   <td height="10" colspan="2"></td>
  10. </tr>
  11. <?php
  12.     }
  13. ?>

codigo que procesa los correos.

Código PHP:
Ver original
  1. include("class.phpmailer.php");
  2.  
  3. $nombres                = $_POST['nombres'];
  4. $nombres_concursantes   = implode(", ",$nombres);
  5.  
  6. $email                  = $_POST['email'];                             
  7. $email_concursantes     = implode(", ",$email);
  8.  
  9.  
  10. //envio a los usuarios registrados.
  11. $mail             = new PHPMailer(); // defaults to using php "mail()"
  12.  
  13. $mail->SetFrom('[email protected]', 'Nombre destinatario');                         
  14.  
  15. $mail->AddAddress($email_concursantes, $nombres_concursantes);
  16. $mail->Subject    = "Confirmacion - participacion en LIMA 2012";   
  17.  
  18. $mensaje = "Hola. correo con <strong>html 5</strong>";
  19.  
  20. $mail->MsgHTML($mensaje);
  21.  
  22. // hago un if si la variable $nombres y $email no esta vacia.
  23. if((!empty($nombres)) && (isset($nombres)) && (!empty($email)) && (isset($email)))
  24. {
  25.    
  26.     if(!$mail->Send())
  27.     {
  28.       echo "Mailer Error: " . $mail->ErrorInfo;
  29.     }
  30.     else
  31.     {
  32.       echo "Tu mensaje se envio a los siguientes correos: ".$email_concursantes."";
  33.     }
  34.    
  35. }

ademas, al imprimir los 2 correos que le estoy enviando, al final hay una coma.

[email protected], [email protected],

mi pregunta es, como haria para que solo cuente los correos que estoy enviando. ya sea 1 ó 2.

saludos.

Última edición por esaenz22; 17/01/2012 a las 10:18 Razón: correcion del texto.
  #2 (permalink)  
Antiguo 17/01/2012, 10:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: problema con envio masivo de email

Tienes que usar el método AddAddress de phpMailer, y le pasas cada dirección. Si ya las tienes en un array es sencillo:
Código PHP:
Ver original
  1. foreach ($emails as $email) {
  2.      $mail->AddAddress($email);
  3. }

Saludos.
  #3 (permalink)  
Antiguo 17/01/2012, 10:20
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: problema con envio masivo de email

gracias por la respuesta GatorV. he usado el metodo AddAddress. pero no sabia que se tenia que colocar dentro de un foreach. otra pregunta. si hago con bd, el insert colocaria dentro del bucle foreach ?.

saludos.

Última edición por esaenz22; 17/01/2012 a las 10:21 Razón: correccion del texto.
  #4 (permalink)  
Antiguo 17/01/2012, 10:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: problema con envio masivo de email

Pues depende de donde quieras hacer el insert, todo depende de la lógica de lo que quieras que haga tu código.

Saludos.
  #5 (permalink)  
Antiguo 17/01/2012, 10:33
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: problema con envio masivo de email

ok. los metodos Subject y MsgHTML los he colocado dentro del bucle. ejecute el formulario, me envia los mensajes a los correos destinatarios, pero me sigue mostrando el mismo mensaje de error.

Invalid address: Tu mensaje se envio a los siguientes correos: [email protected], [email protected], .

Última edición por esaenz22; 17/01/2012 a las 10:34 Razón: correcccion de texto.
  #6 (permalink)  
Antiguo 17/01/2012, 11:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: problema con envio masivo de email

Pues es porque estas agregando los mismos correos, sin ver exactamente como construyes tu correo es difícil poder ver la causa del error.

Saludos.
  #7 (permalink)  
Antiguo 17/01/2012, 11:49
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: problema con envio masivo de email

si es cierto. olvide que nadie es adivino. dejo el codigo que he modifiquicado.

Código PHP:
Ver original
  1. include("class.phpmailer.php");
  2.  
  3. $nombres                = $_POST['nombres'];
  4. $nombres_concursantes   = implode(", ",$nombres);
  5.  
  6. $email                  = $_POST['email'];                             
  7. $email_concursantes     = implode(", ",$email);
  8. $num_emails             = count()
  9.  
  10. //envio a los usuarios registrados.
  11. $mail             = new PHPMailer(); // defaults to using php "mail()"
  12.  
  13. //$mail->SetFrom('[email protected]', 'Concurso LIMA 2010');                           
  14. $mail->From       = "[email protected]";
  15. $mail->FromName   = "Concurso LIMA 2010";  
  16.  
  17.  
  18. foreach ($email as $emails)
  19. {
  20.     $mail->AddAddress($emails);
  21.     $body             = file_get_contents('contents.html');
  22.     $body             = eregi_replace("[\]",'',$body);     
  23.     $mail->Subject    = "Confirmacion - participacion en LIMA 2010";   
  24.     $mail->MsgHTML($body);
  25. }  
  26.  
  27. // hago un if que si la variable $email no esta vacia.
  28. if((!empty($nombres)) && (isset($nombres)) && (!empty($email)) && (isset($email)))
  29. {
  30.    
  31.     if(!$mail->Send())
  32.     {
  33.       echo "Mailer Error: " . $mail->ErrorInfo;
  34.     }
  35.     else
  36.     {
  37.       echo "Tu mensaje se envio a los siguientes correos: ".$email_concursantes."";
  38.     }
  39.    
  40. }

saludos.
  #8 (permalink)  
Antiguo 17/01/2012, 12:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: problema con envio masivo de email

Pues es un mensaje combinado, ya que te dice que fue exitoso, yo usaría un trim para comprobar que no este vacio:
Código PHP:
Ver original
  1. foreach ($emails as $email) {
  2.       $email = trim($email);
  3.       if (empty($email)) { continue; }
  4.       // enviar email
  5. }

Saludos.
  #9 (permalink)  
Antiguo 17/01/2012, 14:01
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: problema con envio masivo de email

ya no muestra el error del PHPMailer GatorV. envie 2 correos distintos. uno de gmail y otro de hotmail. en la bandeja de entrada del hotmail me dice que este mensaje parece ser sospechoso para nuestros filtros de SmartScreen. supongo que sera por el contenido que le puse.

es por la libreria PHPMailer o ya es tema de microsoft ?.

saludos.
  #10 (permalink)  
Antiguo 17/01/2012, 15:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: problema con envio masivo de email

Pues el mismo mensaje lo dice:
"este mensaje parece ser sospechoso para nuestros filtros de SmartScreen"

Eso es algo de Hotmail.

Saludos.

Etiquetas: email, formulario, masivo, registro
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:08.