20

Zend フレームワークを使用してメールを送信しています。構成が完了し、コードが記述されると、すべてが 1 つの呼び出しに要約されます。

$Mail->send($Transport)

このメールが正しく送信されたことを確認するにはどうすればよいですか? Zend Mail が例外をスローすることをどこかで読みましたが、他の人はそうではない場合があると言っています。

Zend_Mail を使用しているときに、メールが適切に送信されたことを保証する防弾プログラムの方法は何ですか?

編集: 送信されたという意味は、SMTP サーバーに送信されたという意味です。

4

2 に答える 2

35

通常Zend_Mail、送信プロセスで何か問題が発生すると例外がスローされますが、これはZend_Mail_Transport_*使用されているプロセスに大きく依存します。

ここには 2 つのオプションがあります。

  • Zend_Mail_Transport_Sendmail(デフォルトのトランスポート) は に依存していmail()ます。mail()が返された場合、 ( Unable to send mailfalse )を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 サーバーとの通信時に例外がスローされない場合は、リモート サーバーが少なくとも電子メールを受け入れたことを確認できます。

于 2009-10-15T13:43:29.970 に答える
1

そうではないと思います。「送信」に失敗すると、例外が発生します。しかし、それは send() 関数が適切に機能したことを確認するだけです。メールが送信されたわけではありません。

メールが配信されたことを確認する唯一の方法は、確認コードのリンクをメールに挿入し、ユーザーにクリックさせることだと思います。

于 2009-10-15T11:36:06.673 に答える