Pregunta sobre informes de entrega sin éxito en el envío de correos electrónicos a granel

StackOverflow https://stackoverflow.com/questions/5847985

  •  27-10-2019
  •  | 
  •  

Pregunta

Tengo una base de datos de aproximadamente 10k usuarios que se han suscrito para boletines. Estoy cambiando mi sitio de ASP a PHP. Estoy enviando boletines a Cron Job. Quiero rastrear el registro del informe de entrega sin éxito. ¿Como es posible? Por favor, guíame, gracias.

¿Fue útil?

Solución

En PHP, cuando envía correo con la función de correo, debe consultar con la condición

if (mail ($ to, $ temas, $ mensaje, $ encabezados)) {// entrega de correo exitoso} else {// código para el correo no successfull}

Esto es altamente inaccrano para lo que el OP realmente está tratando de hacer ... Del manual:

Es importante tener en cuenta que solo porque el correo fue aceptado para la entrega, no significa que el correo realmente llegue al destino previsto.

Dependiendo del tipo de servidor y la configuración, obtendrá resultados diferentes. Es mejor usar SMTP para garantizar una interfaz adecuada y consistente. En general, usaría una biblioteca para hacer esto ... podrías hacerlo tú mismo usando manualmente usando enchufes, pero ¿por qué reinventar la rueda? Hay 3 bibliotecas que uso dependiendo del proyecto ...

Para este nivel de interacción, usaría Swiftmailer o Zend_mail. Ambos admiten obtener información de SMTP y enviar el mensaje, por lo que, por ejemplo, puede obtener información sobre destinatarios fallidos (Ejemplo de Switftmailer). Tanto Zend como Swift también admiten colas de carreras personalizadas para que pueda integrar más profundamente las colas y enviar mensajes de una manera consciente de la aplicación. Swiftmailer también tiene la funcionalidad de lotes ... Supongo que esto también está disponible en zend_mail, pero nunca he cavado hasta las profundidades.

Sin embargo, esta es solo la mitad de la batalla ... para leer realmente los NDR, necesitas scripts en la tienda de correo, recorriendo los mensajes y luego analizar los encabezados y/o el cuerpo del mensaje del NDR (Asegúrese de consultar los documentos de RFC que figuran en la wikipage), luego tome medidas basadas en eso. Recientemente usé Zend_mail_storage para manejar esto. Si necesita hacer esto, entonces probablemente también desee seguir adelante y usar zend_mail para enviar también, ya que el almacenamiento se incluye en el componente. Deberá echar un vistazo al RFC para los códigos de estado y los NDR para analizar correctamente.

En general, si es posible, recomiendo simplemente integrar un servicio de terceros como Mailchimp o Contacto constante. Es mucho menos trabajo, y a menos que tenga un equipo de desarrolladores trabajando en esto con el tiempo, un servicio probablemente obtendrá mejores resultados en todos los ámbitos.

Otros consejos

En PHP, cuando envía correo con la función de correo, debe consultar con la condición

if (mail ($ to, $ temas, $ mensaje, $ encabezados)) {// entrega de correo exitoso} else {// código para el correo no successfull}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top