Foros del Web » Programando para Internet » PHP »

phpmailer y envios grandes

Estas en el tema de phpmailer y envios grandes en el foro de PHP en Foros del Web. Hola progrmae un sitema de envios para eso hice un sitema de listas que me toma los correos de una base de datos actualmente son ...
  #1 (permalink)  
Antiguo 13/10/2009, 13:47
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 16 años, 5 meses
Puntos: 0
phpmailer y envios grandes

Hola progrmae un sitema de envios para eso hice un sitema de listas que me toma los correos de una base de datos actualmente son 4 listas y en total suman un poco menos de 1500 correo hago un bucle para recorrer segun la lista los correos que le corresponden pongo la parte del codigo mi servidor me permite enviar hasta 5000 por un puerto especifico pero el problema que tengo es que cuand temina el bucle yo cambio el estado del mensaje a enviado pero pero cuando me tira un error no se si envio el correo o no se a cuantos envio hay alguna forma de saber eso o como podria hacer para hacer envios de a 200 correos por ejemplo y que a los 10 minutos envie los siguientes 200 yo hice epruebas (codigo de abajo) con sleep dejo el codigo pero en el caso qeu retome el envio si hay algun error tampoco sabria a cuales envios de tambien configure un cron para que se fije pero si el estado del envios es no enviado envia el correo y en ese caso estaria enviado de vualta a los correos que ya envio

Código PHP:
//mensajes cantidad
$between_delay 1;  
//segundos entre
$send_delay 1;  


echo 
"Iniciando...<br>";
for ( 
$sent=0$a mysql_fetch_array($res); $sent++ ) { 

 if ( (
$sent $between_delay) == 
  
sleep$send_delay );
 
$estadistica '<img src="http://XXXXXXXX/estadistica.php?&id_correo='.$id_correo.'" width="0" height="0" />';

// esto es una prueba para remplazar por emdio de eiquetas y hacerlo personalizado 
$mensaje2 str_replace("[nombre]",$a["nombre"],$mensaje);
$mensaje3 str_replace("[apellido]",$a["apellido"],$mensaje2);
//$mensaje4 = str_replace("[estadistica]",$estadistica,$mensaje3);
$mensaje5 str_replace("[empresa]",$a["empresa"],$mensaje3);


$mail->AddAddress($a["correo"]); 
$body $mensaje5.$estadistica;
$mail->IsHTML(true); 
$mail->Subject $asunto
$mail->Body $body
$mail->MessageID $id_correo;
$exito $mail->Send(); 



if(
$exito) {
echo 
$a["correo"] . "ok <br>";
    }else{
   echo 
$a["correo"] . "error <br>";
}
$mail->ClearAddresses();

$contador++;


el codigo funciona bien con poca cantiddad de correos ahora esta configurado para que mande 1 cada 1 segundo para probar y funciona

muchas gracias por alguna opinion
  #2 (permalink)  
Antiguo 13/10/2009, 13:55
Avatar de _-ZeuS-_  
Fecha de Ingreso: junio-2007
Ubicación: Quito, Ecuador! ;)
Mensajes: 100
Antigüedad: 17 años, 5 meses
Puntos: 7
Desacuerdo Respuesta: phpmailer y envios grandes

Hola sabes ahí tienes un gran problema entre manos y es que la mayoría de servidores reconocen como spam al mismo mensaje que entra a varios usuarios te recomendaría que lo personalices de alguna manera poniendo tal vez el nombre de la persona al que va dirigido que al parecer lo haces aquí:
Código PHP:
// esto es una prueba para remplazar por emdio de eiquetas y hacerlo personalizado 
$mensaje2 str_replace("[nombre]",$a["nombre"],$mensaje);
$mensaje3 str_replace("[apellido]",$a["apellido"],$mensaje2);
//$mensaje4 = str_replace("[estadistica]",$estadistica,$mensaje3);
$mensaje5 str_replace("[empresa]",$a["empresa"],$mensaje3); 
ahora lo que puedes hacer es que envíe un mail cada 10 segundos eso tal vez engañe un poco, por otro lado para revisar a quienes llego y a quienes no llego creo que tienes un problema a menos que puedas hacer que te envíen una confirmación del email en el momento de que el usuario lo lee pero sinceramente no sé una manera de que te devuelvan una confirmación creo que eso es algo que no podemos controlar, he visto que hay algo como poner cabeceras mime pero en realidad no funciona con todos los webmails más bien sólo lo hace con los clientes de escritorio como (outlook o thunderbird).

Intenta dando el intervalo y bueno si no todos reciben los mails pues no creo que se pueda hacer algo al respecto si encuentras la manera te agradecería que lo pongas en el foro x que tb puede ser muy útil.
  #3 (permalink)  
Antiguo 13/10/2009, 15:31
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: phpmailer y envios grandes

gracias por la recomendacion si eso es lo que remplaza las etiquetas puestas en el mensaje pero por ejemplo en los envios que no personalizo me los tomaria como spam ??
Como hacen los sitsemas de envios cuando no se envian mensajes personalizados?

Con respecto a lo otro tengo hecho un archivo que devuelve las estádisticas de rebote con la funcion imap tomo de la bandeja de entrada los rebotados y actualizo la base el correo como rebotado y como tambien envio en MensajeId del header del correo el id_del mensaje asi que con eso tengo los rebotes del mensaje y los correos que rebotaron (todavia a prueba esto) por otro lado tengo las estadisticas de quien lo abre poniendo un imagen transparete para saber el open rates y para saber si es unica comparo las ip y el correo, pero volviendo a al otro tema la foma de hacer envios listas asi es hacer un bucle como hago recorriendo los correos pero no se cual puede ser el problema porque hice envios a una lista superior a 250 me tira error pero no un error de php sino un error del servidor como si el tiempo de ejecucion o com perdiera la conexion la verdad no se supongo que el problema no esta en bucle sino en otra cosa quizas algo del servidor o mi palicacion lo raro es que lo he probado con 150 correos y funciona bien

bueno saludos y gracias
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:00.