Ver Mensaje Individual
  #8 (permalink)  
Antiguo 24/11/2002, 20:01
Avatar de Webstudio
Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Zeus, realmente la manera más eficiente de mandar emails, es la de NO utilizar la función mail() de PHP, sino abrir un socket directamente al server SMTP (como lo haría cualquier cliente de email) y enviar las cabeceras correspondientes y luego el mensaje, así tantas veces como mensajs necesites enviar.

Porque NO utilizar la función mail() ? Por ineficiente, ya que esta función lo que hace es abrir una conexion con sendmail, enviar el mail, y cerrar la conexión. Si el bucle que haces para enviar mails, es más rápido que la capacidad de Sendmail de recibir envios ( y estate seguro que así será), entonces sendmail comienza a mantener una "cola de espera" de mensajes salientes. Cuanto esta cola llegue a su tamaño máximo (depende de cada linux), entonces no solo cancelará la ejecución de tu script, sino del sendmail mismo.

Yo todas las semanas, tengo que enviar un mailing a aproximadamente unas 250.000 personas, y lo que hago es lo siguiente:

1) Utilizo la clase de Herminio para enviar mails conectandote directamente a Sendmail, un poco modificada.
2) Evito que entre mail y mail se cierre la conexion porque toma bastante tiempo cerrar y abrir la conexión permanentemente.
3) envio 1 mail a 1 persona, con otras 199 en el BCC
4) "pagino" la ejecución del Script, enviando 20 mails, y luego volviendo a llamar el script, pero con los mails siguientes

En total, no tardo más de 6 minutos en hacer todos los envíos, y ahora salvo algún problema de server, nunca cancela la ejecución del Script.

Saludos.