2009-10-09 15 views
5

Estoy usando php y mysql.¿Hay un límite al usar la función de correo php?

Voy a enviar 10k ++ (diez mil más) correos electrónicos para actualizar mis suscriptores, y esta es la primera vez que los enviaré. Voy a utilizar la función de correo php, básicamente, esto es lo que haré:

En primer lugar obtener los datos de la base de datos:

Select name, email FROM data 

Después de eso, el uso de bucle while para enviar los datos:

while($r = mysql_fetch_assoc($exe)){ 
    ... 
    if($mail){ 
     echo "success<br>"; 
    } else { 
     echo "failed<br>"; 
    } 
} 
echo "Sent all"; 

Incluyo la instrucción if .. else para asegurarme de que cada correo electrónico se envíe correctamente. ¿Hay algo de lo que necesite ocuparme? ¿Tendré algún problema al ENVIAR A usuarios de 10K ++?

¿Hay un límite en el número de correos electrónicos que va a enviar?

+1

relacionado - http://stackoverflow.com/questions/788596/whats-the-best-approach-to-sending-email-to-hundreds-of-recipients-from-a-zend-f – warren

Respuesta

4

No hay límite para el número de correo electrónico, pero existe el límite de tiempo del script PHP. Vea el max_execution_time en su php.ini, generalmente son 20 o 30 segundos. Si no lo sabe, use phpinfo() para averiguarlo.

Además, debe tomar algunas medidas para evitar que los usuarios reciban demasiados correos electrónicos. Debe marcarlos como enviados, para que no reciban dos publicaciones si accidentalmente inicia el script dos veces.

Aparte de eso, debe tener en cuenta que la función de correo de php no está optimizada en absoluto. Puede probar algunas bibliotecas, como phpmimemessage o cualquier otra, lo que le permitirá hacer algo de almacenamiento en caché, por ejemplo, entre muchas otras funciones.

+0

Omg, I no sabía eso. Entonces, ¿normalmente usas "phpmimemessage" para enviar correos electrónicos de 10k ++? ¿Qué biblioteca estás usando? – bbtang

+0

He hecho algo mucho más complejo, pero sí, estaba usando esta biblioteca para hacer envíos masivos (boletines informativos). Mimemessage es bastante viejo ahora, ahora hay mejores bibliotecas, vea otras respuestas, o google para ellas. Sin embargo, mi script se ejecutaba en segundo plano desde CLI, sin limitaciones de tiempo. – Palantir

9

Por favor, ser conscientes de esta nota de la mail documentation:

Nota: Vale la pena señalar que la función mail() es no es adecuado para grandes volúmenes de correo electrónico en un bucle. Esta función abre y cierra un socket SMTP para cada correo electrónico, que no es muy eficiente.
Para enviar grandes cantidades de correo electrónico, consulte los paquetes »PEAR :: Mail y» PEAR :: Mail_Queue.

+0

¿Qué biblioteca usa para enviar correos electrónicos explosivos? Pera :: correo? Voy a estudiar eso. Gracias – bbtang

+0

use pear :: Mail_Queue, no mail –

2

Debe crear una cola de correos electrónicos enviados/fallidos, para que pueda tratar de volver a enviar los intentos fallidos y evitar volver a enviar correos electrónicos si algo sale mal.

No crear un bucle que intenta enviar mensajes de correo electrónico a través de correo 10k()

Además, los más propensos límite que va a golpear será la del servidor de correo de su ISP o host.

Cuestiones relacionadas