Как проверить отправку письма при использовании Zend Mail?
Я использую платформу Zend для отправки почты. Как только конфигурация завершена и код написан, все сводится к одному вызову:
$Mail->send($Transport)
Как я могу проверить, что это письмо было отправлено правильно? Я где-то читал, что Zend Mail создает исключение, но другие люди говорили, что иногда это не так.
Какой пуленепробиваемый программный способ обеспечить правильную отправку почты при использовании Zend_Mail?
РЕДАКТИРОВАТЬ: Когда я имею в виду отправлено, я имею в виду отправлено на SMTP сервер.
2 answers
Обычно 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 не возникает никаких исключений, вы можете быть уверены, что удаленный сервер, по крайней мере, принял вашу электронную почту.
Я думаю, что это не так. Если "отправка" не удалась, вы получите исключение. Но это всего лишь проверка того, что функция send() работала правильно. Это не значит, что письмо было отправлено.
Я думаю, что единственный способ убедиться, что почта была доставлена, - это вставить ссылку с кодом подтверждения в письмо и заставить пользователя щелкнуть по ней.