2009-10-15 2 views
20

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

$Mail->send($Transport) 

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

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

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

+0

Отправлено на сервер SMTP? или отправлено в MTA? – Mez

ответ

34

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

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

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

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

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

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

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

+0

Простите, что я прочитал ваш вопрос о отправке электронной почты с помощью сервера STMP - вы можете пропустить пункт 1 в своем ответе. –

+0

Очень хорошо +1,;) –

+0

Я получаю сообщение об ошибке, когда я использую Zend_Mail_Transport_Smtp..Что может быть причиной ??? –

0

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

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

+0

Я имею в виду отправленный на сервер SMTP, не проверяя, что он был доставлен. –

+0

Чем я догадываюсь, достаточно, чтобы Zend_Transport_SendMail() не выдавал исключение;) –

Смежные вопросы