Foros del Web » Programando para Internet » PHP »

correo masivo con phpmailer.

Estas en el tema de correo masivo con phpmailer. en el foro de PHP en Foros del Web. Hola a todos necesito enviar un correo masivo a clientes, desde un archivo .txt o .csv, aqui tengo el codigo; pero de verdad no se ...
  #1 (permalink)  
Antiguo 30/07/2009, 14:47
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
correo masivo con phpmailer.

Hola a todos necesito enviar un correo masivo a clientes, desde un archivo .txt o .csv, aqui tengo el codigo; pero de verdad no se que es lo que no funciona, porque no recibo ningun correo.

Clientes_con_tarjeta.csv
-------------------------------
German Herrera Cabezas;[email protected]
Sergio Escudero Perez;[email protected]
Francisco Chavarria S.;[email protected]
Roberto Cortes Cabezas;[email protected]



masivophp.php
-------------------
Código PHP:
<?php                                                                           
require("/srv/www/htdocs/phpmailer/class.phpmailer.php");                       
//Datos archivo TXT                                                             
$lineas=file("/masivo/txt/Clientes_con_tarjeta.csv");                           
$mail = new PHPMailer();                                                        
$mail->Host "mail.xxxx.cl";                                                   
$mail->From "[email protected]";                                               
$mail->FromName "Correo Masivo";                                              
//Asunto                                                                        
$mail->Subject "Promocion mes de Julio del 2009";                             
//Cuerpo del Mensaje                                                            
$body  "En <strong>Importadora COSA S.A.</strong> descubrimos como agradecer t
u preferencia.<br>"
;                                                            
$body .= "Cuida tu <b>FIAT</b> y disfruta en grande con la tarjeta de beneficios
 COSA, informate en el link beneficios de nuestro sitio web.<br><br>"
;          
$body .= "<font color='red'>www.cosa.cl</font>";                                
//hacer ciclo para envio del email a cada uno de los clientes                   
foreach ($lineas as $linea_num => $linea)                                       
{                                                                               
  
$datos=explode(";"$linea);                                                  
  
$nombres=$datos[0];                                                           
  
$correos=$datos[1];                                                           
  
$mail->AddAddress($nombres,$correos);                                         
  
$mail->Body $body;                                                          
  
$mail->AltBody "Hola amigos\nprobando envio email masivo.\n\nSaludos";      
  
$mail->AddAttachment("masivo/images/Promo-Julio.jpg""Promo-Julio.jpg");     
  
$mail->Send();                                                                
//Fin Foreach                                                                 
?>
Desde ya se agradece cualquier ayuda, la necesito.... GRACIAS

Última edición por [email protected]; 30/07/2009 a las 15:02
  #2 (permalink)  
Antiguo 30/07/2009, 15:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: correo masivo con phpmailer.

Si estas usando csv puedes usar fgetcsv para extraer los datos.

Saludos.
  #3 (permalink)  
Antiguo 30/07/2009, 16:01
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: correo masivo con phpmailer.

hice una prueba cambiando algunos datos pero entra en un ciclo interminable, algun consejo o ayuda.
Código PHP:
$row=1;                                                       
$handle=fopen("masivo/txt/Clientes_con_tarjeta.csv","r");     
while ((
$data fgetcsv($handle1000";")) !== FALSE) {         
    
$num count($data);                                          
    echo 
"<p> $num fields in line $row: <br /></p>\n";            
    
$row++;                                                       
    for (
$c=0$c $num$c++) {                                 
        echo 
$data[$c] . "<br />\n";                              
    }                                                             
}                                                                 
fclose($handle); 
GRACIAS.
  #4 (permalink)  
Antiguo 30/07/2009, 16:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: correo masivo con phpmailer.

Muy raro, no debería llegar a un ciclo interminable, estas seguro que lo estas ejecutando correctamente?

Saludos.
  #5 (permalink)  
Antiguo 30/07/2009, 16:32
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: correo masivo con phpmailer.

Hola , podrias poner un fragmento de como tienes tu csv para poder verificar el error que detallas?.

Saludos!
  #6 (permalink)  
Antiguo 30/07/2009, 16:35
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: correo masivo con phpmailer.

Cita:
Iniciado por jonatanc Ver Mensaje
Hola , podrias poner un fragmento de como tienes tu csv para poder verificar el error que detallas?.

Saludos!
este es el fragmento del csv

Clientes_con_tarjeta.csv
-------------------------------
German Herrera Cabezas;[email protected]
Sergio Escudero Perez;[email protected]
Francisco Chavarria S.;[email protected]
Roberto Cortes Cabezas;[email protected]
  #7 (permalink)  
Antiguo 30/07/2009, 16:44
Avatar de Luis207  
Fecha de Ingreso: abril-2009
Mensajes: 52
Antigüedad: 15 años
Puntos: 0
Respuesta: correo masivo con phpmailer.

¿Pero no manda ningún mail?
  #8 (permalink)  
Antiguo 30/07/2009, 16:56
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: correo masivo con phpmailer.

Hola , mira prueba con el codigo este que te adjunto aqui:

Código php:
Ver original
  1. <?php
  2.  
  3. /**
  4.  * Script Author: Jonatan Lucio Casagrande <[email protected]>
  5.  * Script Function:
  6.  * Script Info: -
  7.  */
  8.  
  9. $fichero_csv=fopen('emails.csv','r',true);
  10.  
  11. while($info = fgetcsv($fichero_csv,1000,';')){
  12. $mail->AddAddress($info['0'],$info['1']);
  13. }
  14.  
  15. ?>

Fijate que uso fgetcsv y como delimitador el ; , tal cual tienes tu csv.

Saludos
  #9 (permalink)  
Antiguo 31/07/2009, 08:24
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: correo masivo con phpmailer.

JONATANC, retomando el tema de ayer te indico el codigo completo para que lo observes. En referencia al código recomendado te menciono que NO FUNCIONO, algo mal debo haber hecho.

MASIVOPHP.PHP
--------------------
Código PHP:
<?php                                                                           
require("/srv/www/htdocs/phpmailer/class.phpmailer.php");                       
//Datos archivo TXT                                                             
$handle=fopen('txt/Clientes_con_tarjeta.csv','r',true);                  
$mail = new PHPMailer();                                                        
$mail->Host "mail.cosa.cl";                                                  
$mail->From "[email protected]";                                              
$mail->FromName "Correo Masivo";                                              
//Asunto                                                                        
$mail->Subject "Promocion mes de Julio del 2009";                             
//Cuerpo del Mensaje                                                            
$body  "En <strong>Importadora COSA S.A.</strong> descubrimos como agradecer 
tu preferencia.<br>"
;                                                           
$body .= "Cuida tu <b>FIAT</b> y disfruta en grande con la tarjeta de beneficios
 COSA, informate en el link beneficios de nuestro sitio web.<br><br>"
;         
$body .= "<font color='red'>www.cosa.cl</font>";                               
//hacer ciclo para envio del email a cada uno de los clientes                   
while ($data fgetcsv($handle,1000,';'))                                       
{                                                                               
    
$nombres=$data[0];                                                          
    
$correos=$data[1];                                                          
    
$mail->AddAddress($nombres,$correos);                                       
    
$mail->Body $body;
    
$mail->AltBody "Hola amigos\nprobando envio email masivo.\n\nSaludos";    
    
$mail->AddAttachment("images/Promo-Julio.jpg""Promo-Julio.jpg");   
    
$mail->Send();                                                              
}                                                                               
fclose($handle);                                                                
?>
  #10 (permalink)  
Antiguo 31/07/2009, 09:21
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: correo masivo con phpmailer.

El envio resulto, pero me llegaron todas los email a mi correo de esta forma:

Para: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; "S."@cosa.cl; [email protected]; [email protected]

para que tengas un poco claro observa el CSV que esta mas arriba. Ademas el Adjunto no llego..

Alguien tiene idea de lo que paso, al respecto?
  #11 (permalink)  
Antiguo 31/07/2009, 10:43
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: correo masivo con phpmailer.

Estimado áqui te dejo un par de links para que puedas darte una mejor idea y adaptar los codigos:

http://blog.unijimpe.net/enviar-email-multiple-con-php/

http://www.downtwarez.com/foro/php/4...l-y-otros.html

Por otro lado la implementación correcta a mi parece seria la siguiente:

Código php:
Ver original
  1. <?php
  2. require ("/srv/www/htdocs/phpmailer/class.phpmailer.php");
  3. //Datos archivo TXT
  4. $handle = fopen('txt/Clientes_con_tarjeta.csv', 'r', true);
  5. $mail = new PHPMailer();
  6. $mail->Host = "mail.cosa.cl";
  7. $mail->From = "[email protected]";
  8. $mail->FromName = "Correo Masivo";
  9. //Asunto
  10. $mail->Subject = "Promocion mes de Julio del 2009";
  11. //Cuerpo del Mensaje
  12. $body = "En <strong>Importadora COSA S.A.</strong> descubrimos como agradecer
  13. tu preferencia.<br>";
  14. $body .= "Cuida tu <b>FIAT</b> y disfruta en grande con la tarjeta de beneficios
  15. COSA, informate en el link beneficios de nuestro sitio web.<br><br>";
  16. $body .= "<font color='red'>www.cosa.cl</font>";
  17. //hacer ciclo para envio del email a cada uno de los clientes
  18. while ($data = fgetcsv($handle, 1000, ';')) {
  19.     $nombres = $data[0];
  20.     $correos = $data[1];
  21.     $mail->AddAddress($nombres, $correos);
  22.  
  23. }
  24. $mail->Body = $body;
  25. $mail->AltBody = "Hola amigos\nprobando envio email masivo.\n\nSaludos";
  26. $mail->AddAttachment("images/Promo-Julio.jpg", "Promo-Julio.jpg");
  27. if($mail->Send()){
  28.     echo "Envio satisfactorio";
  29. }else{
  30.     echo "Fallo el envio";
  31. }
  32. fclose($handle);
  33. ?>


Saludos!

Última edición por jonatanc; 31/07/2009 a las 11:16
  #12 (permalink)  
Antiguo 31/07/2009, 10:59
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: correo masivo con phpmailer.

Alguno podrá decirme como puedo agregar el siguiente codigo


switch ($cliente) {
case "1":
return $handle=fopen('1.csv','r',true);
break;
case "2":
return $handle=fopen('2.csv','r',true);
break;
case "3":
return $handle=fopen('3.csv','r',true);
break;
}

En el último código más arriba me funcionó OK solo necesitaría que el valor de $handle varíe según un valor que recibo por _POST.

Slds.
  #13 (permalink)  
Antiguo 31/07/2009, 11:12
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: correo masivo con phpmailer.

Estimado Troiken , seria de muchisima utilidad que abras un nuevo post para no mezclar los temas.

Desde ya muchas gracias!
  #14 (permalink)  
Antiguo 31/07/2009, 11:26
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: correo masivo con phpmailer.

Cita:
Iniciado por jonatanc Ver Mensaje
Estimado Troiken , seria de muchisima utilidad que abras un nuevo post para no mezclar los temas.

Desde ya muchas gracias!
Ya abrí un post aporte, pero utilzando el último codigo que vos pusiste logré que andara el 90% de lo que necesito, por eso tb lo copie acá.

Slds.
  #15 (permalink)  
Antiguo 31/07/2009, 11:31
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: correo masivo con phpmailer.

Cita:
Iniciado por troiken Ver Mensaje
Ya abrí un post aporte, pero utilzando el último codigo que vos pusiste logré que andara el 90% de lo que necesito, por eso tb lo copie acá.

Slds.
Entonces serias tan amable de colocar editanto tu post donde pides la ayuda sobre ese switch con el link al post donde publicas tu error o dificultad sobre dicho codigo?.

Saludos

PD: no debes hacer el return , quita el return en cada linea y listo.
  #16 (permalink)  
Antiguo 31/07/2009, 11:48
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: correo masivo con phpmailer.

Gracias por tu aparte lo tomere en cuenta para mejorar el codigo a la brevedad. Pero antes me gustaria hacerte las siguientes consultas:
1) Cuando recibo el correo, me llegan todos a mi cuenta, segun CSV dice:
Clientes_con_tarjeta.csv
German Herrera Cabezas;[email protected]
Sergio Escudero Perez;[email protected]
Francisco Chavarria S.;[email protected]
Roberto Cortes Cabezas;[email protected]
2) en correo dice:
Para:[email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; "S."@cosa.cl; [email protected]; [email protected]
3) ¿Es posible que enves de imagen adjunta, esta venga como parte del cuerpo?
Desde ya se agradece cualquier informacion al respecto.

Última edición por [email protected]; 31/07/2009 a las 12:05 Razón: solucine algunas preguntas, por eso actualize.
  #17 (permalink)  
Antiguo 31/07/2009, 18:06
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: correo masivo con phpmailer.

Hola , mira , el campo para esta bien formado , lo que podriamos hacer es pasarlo a enviar con copia , a ese campo , y en para solo tu dirección de ese modo controlas que el envio se realizo y no te llegan millones de emails.

En esta noche armo bien el codigo y te lo copio mi solución.

Saludos!
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 18:18.