Подтвердить что ты не робот

Как проверить почту, отправленную при использовании Zend_Mail?

Я использую фреймворк Zend для отправки почты. После того, как конфигурация выполнена, и написанный код все сводится к одному вызову:

$Mail->send($Transport)

Как я могу проверить правильность отправки этой почты? Я где-то читал, что Zend Mail генерирует исключение, но другие люди говорили, что это иногда не так.

Какой пуленепробиваемый способ обеспечения правильной отправки почты при использовании Zend_Mail?

EDIT: Когда я имею в виду отправленный, я имею в виду отправленный на SMTP-сервер.

4b9b3361

Ответ 1

Обычно Zend_Mail генерирует исключение, если что-то не так происходит в процессе отправки, но это сильно зависит от используемого Zend_Mail_Transport_*.

У вас есть два варианта:

  • Zend_Mail_Transport_Sendmail (транспорт по умолчанию) зависит от mail(). Если mail() возвращает false, Zend_Mail_Transport_Sendmail выбрасывает Zend_Mail_Transport_Exception (Невозможно отправить почту). Само возвращаемое значение не очень надежное. В этом руководстве говорится о возвращаемом значении:

    Возвращает TRUE, если почта была успешно принята к доставке, в противном случае FALSE.

    Важно отметить, что только потому, что почта была принята для доставки, это НЕ означает, что почта действительно достигнет назначенного адресата.

  • Zend_Mail_Transport_Smtp отправляет электронное письмо по протоколу SMTP, заключенному в Zend_Mail_Protocol_Smtp. В этом случае вы получите Zend_Mail_Protocol_Exception всякий раз, когда что-либо нарушает SMTP-протокол (отправка почты без указания адреса отправителя, например), или сервер STMP сообщает об ошибке или времени соединения.

    Итак, если при разговоре с сервером STMP не возникает исключение, вы можете быть уверены, что удаленный сервер по крайней мере принял вашу электронную почту.

Ответ 2

Я думаю, это не так. Если "отправка" не удалась, вы получаете исключение. Но это только проверка, что функция send() работает правильно. Это не значит, что почта отправлена.

Я предполагаю, что единственный способ обеспечить доставку почты - это вставить ссылку для кода подтверждения в почту и заставить пользователя щелкнуть ее.