2012-01-07 15 views
1

可能性の重複:
Swiftmailer 4 does not retrieve bounces as $failedRecipientsではSwiftMailer GmailのSMTPの失敗

私はSMTPを使ってGmailアカウントを通じて電子メールを送信するためにSwiftMailerを使用しています。

私はすべての設定を完全に完了しており、問題なくメールを送信できます。

documentationsend()が失敗した電子メールアドレスに、(私はそれ$failures呼ばれました)何もメッセージが正常に送信されていない場合0を返し、配列を移入すべきであると述べています。

私は見ています問題は、私は非existantアドレス([email protected])に電子メールを送信する場合、私はGmailからの応答を得ることです:

Mail Delivery Subsystem [email protected] 
9:06 PM (6 minutes ago) 
to me 
Delivery to the following recipient failed permanently: 

    [email protected] 

Technical details of permanent failure: 
DNS Error: Domain name not found 

----- Original message ----- 

をしかし、ではSwiftMailerはまだ1(1のメッセージを返します。正常に送信されました)、$failures配列は空のままです。

接続はSSLで暗号化されているので、私はwiresharkでパケットを盗聴して見ることはできません。

私の勘違いは、GMailのSMTPサーバーが失敗に関する電子メールを生成して送信アドレスに送信する間、成功を返すということです。

これは間違いありませんか?もしそうなら、PHPの失敗をキャッチする方法はありますか?

+0

Swiftmailerはメールのみを送信します。後でエラーメッセージが表示され、Swiftmailerはそれらをチェックしません。 – hakre

+0

ちょうどヒント:実際に電子メールを送信する前に、そのドメインのMX DNSレコードが存在するかどうか確認できます:http://www.php.net/manual/en/function.checkdnsrr.php – JuCachalot

答えて

0

スウィフトは、SMTPサーバーが配信のためにメールを受け入れたかどうかだけを通知することができます。メール配信プロセスの後半に表示されるエラーを確認することはできません。

あなたのケースでは、gmailのSMTPデーモンがメッセージを受け入れ、処理しようとしたときに失敗しました。これは後でこの方法でしか通知できません。

これらをプログラムで確認したい場合は、gmailアカウントにログインして同様のメッセージをスキャンするIMAPクライアントを作成することができます。努力する価値はあるとは思えませんが。

+1

私はそうは思わないそれは難しいでしょう。 'Return-Path'を' bounce + uniqueid @ mydomain.com'のように設定し、 'bounce @ mydomain.com'をチェックしてそれらのユニークIDを収集するcronジョブを実行すると動作します。ここで問題となるのは、gmailがGmailのアドレスにカスタムの 'return-path'ヘッダを置き換えることですが、それはここでの主な問題ではありません:) – F21

関連する問題