Pregunta

Estoy utilizando el Zend Framework para enviar correo. Una vez que la configuración se realiza y el código escrito que todo se reduce a una sola llamada:

$Mail->send($Transport)

¿Cómo puedo comprobar que este mensaje ha sido enviado correctamente? He leído en alguna parte que Zend correo lanza una excepción, pero otras personas han dicho esto a veces no es el caso.

¿Cuál es la forma programática a prueba de balas para garantizar mensaje ha sido enviado correctamente cuando se utiliza Zend_Mail?

EDIT:. Cuando me refiero envié, me refiero envía al servidor SMTP

¿Fue útil?

Solución

En general Zend_Mail será una excepción si hay algo malo sucede en el proceso de envío-- pero esto depende en gran medida del Zend_Mail_Transport_* está utilizando

.

Existen dos opciones aquí:

  • Zend_Mail_Transport_Sendmail (el transporte por defecto) se basa en mail() . Si mail() vuelve false, Zend_Mail_Transport_Sendmail lanza una Zend_Mail_Transport_Exception ( No se puede enviar correo ). El valor de retorno en sí no es muy fiable. Esto es lo que dice el manual sobre el valor de retorno:

      

    Devuelve VERDADERO si el correo fue aceptado satisfactoriamente para su envío, de lo contrario.

         

    Es importante tener en cuenta que sólo porque el correo fue aceptado para la entrega, esto no significa que el correo realmente vaya a llegar al destino previsto.

  • Zend_Mail_Transport_Smtp envía el correo electrónico utilizando el protocolo SMTP que se encapsula en Zend_Mail_Protocol_Smtp. En este caso obtendrá un Zend_Mail_Protocol_Exception cada vez que algo viola ya la (envío de correo sin dar la dirección del remitente, por ejemplo) o protocolo SMTP informa al servidor SMTP un error o los tiempos de espera de la conexión.

    Así que si no es una excepción es lanzada al hablar con el servidor SMTP, puede estar seguro de que el servidor remoto al menos aceptó su correo electrónico.

Otros consejos

Creo que no lo es. Si "enviar" No se pudo obtener una excepción. Pero eso es sólo un cheque, que la función send () funcionaba correctamente. Esto no significa que el correo consiguió enviar.

Creo que la única manera de ensude el correo fue entregado es insertar un enlace código de confirmación inte el correo y hacer que el usuario haga clic en él.

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