2011-02-14 26 views

Respuesta

4

Existe una buena posibilidad de que el número de direcciones en el campo BCC esté limitado en el servidor SMTP (para evitar el correo no deseado). Me gustaría ir con la ruta segura y enviar un correo electrónico a cada suscriptor individual. Eso también le permitirá personalizar el correo electrónico para cada suscriptor si es necesario.

También tenga en cuenta que mail() probablemente no sea la mejor forma de enviar correo masivo (debido a que abre una nueva conexión con el servidor SMTP cada vez que se invoca). Es posible que desee mirar en PEAR::Mail.

+0

Gracias por la sugerencia PEAR. – Francisc

1

La mejor práctica es enviar un correo electrónico por destinatario.

Si se trata de un servidor de correo de Linux, puede manejar una producción masiva, por lo que el volumen no debería ser un problema a menos que sea un servidor de mierda.

Si se trata de un servidor web compartido, es posible que su host no esté satisfecho; si este es el caso, lo dividiría en paquetes y difundiría el envío. Si está dedicado, haz lo que quieras :)

+0

Gracias, Brian. – Francisc

1

Si el proceso de envío por algún motivo falló (ejemplo, podría ser un dominio no resuelto) para uno de los destinatarios de BCC, se cancelaría toda la operación (que está en el 99% de casos de comportamiento no deseado).

Si envía los correos electrónicos en un bucle de PHP, incluso si uno de los correos electrónicos no se envía, se enviarán otros correos electrónicos.

+0

Nunca he experimentado este comportamiento en ningún servidor de correo, ¿podría proporcionar una fuente para esta información? –

+0

@Victor Welling Me encontré con esto en el trabajo, aunque no conozco el software exacto del servidor de correo. –

1

Como los demás dicen que un correo por destinatario es el que mejor se adapta.

Si desea una biblioteca para hacer el trabajo sucio por ti, darle una oportunidad a SwiftMailer http://swiftmailer.org

Aquí está un ejemplo directamente de los documentos:

require_once 'lib/swift_required.php'; 

//Create the Transport 
$transport = Swift_SmtpTransport::newInstance('localhost', 25); 

//Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

//Create a message 
$message = Swift_Message::newInstance('Wonderful Subject') 
    ->setFrom(array('[email protected]' => 'John Doe')) 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 
    ->setBody('Here is the message itself') 
    ; 

//Send the message 
$numSent = $mailer->batchSend($message); 

printf("Sent %d messages\n", $numSent); 

/* Note that often that only the boolean equivalent of the 
    return value is of concern (zero indicates FALSE) 

if ($mailer->batchSend($message)) 
{ 
    echo "Sent\n"; 
} 
else 
{ 
    echo "Failed\n"; 
} 

*/ 

También tiene un buen complemento Antiflood : http://swiftmailer.org/docs/antiflood-plugin-howto

Cuestiones relacionadas