- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MAILER-DAEMONからメールアドレスを抽出)
MAILER-DAEMONからメールアドレスを抽出する方法
このQ&Aのポイント
- PHPで作成したメールの一斉送信システムで、MAILER-DAEMONから返ってきたメールの元々の宛先(エラーとなったメールアドレス)を抽出する方法について教えてください。
- MAILER-DAEMONとなって戻ってきたメールのメールヘッダや本文から元々の宛先を判断する方法を試しましたが、うまくいきませんでした。
- MAILER-DAEMONのメールからエラーとなったメールアドレスを抽出する処理方法についてアドバイスをいただけますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラーメールはmultipart(Content:type: multipart/report; report-type=delivery-status;)になっていませんか?その中にContent-Type: message/delivery-statusのパートがあれば、その本文に「Final-Recipient」として記載されていると思いますが、如何でしょうか? #それ以外のフォーマットは手元のメールBOXからは見つかりませんでした(汗 text/plainのパートは相手サーバによって違っていてもmessage/delivery-statusの書式は同じじゃないかと思いますが・・・
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
回答No.2
補足です。 そもそも「送信元SMTPが相手先SMTPからの応答で送れないと判断して返してくる」ケースと、「相手先SMTPから直接返ってくる」ケース(相手先がいったん受け取ってからエラーを返してくる)がありますよね。 送信先がGMailだと(GMailのSMTPからではなく)送信元SMTPからエラーメールが返っていませんか?ウチのSMTPはこのケースでもmultiupartが返りますが、こればっかりは(自分側の)SMTP次第です。 #逆に「相手先SMTPから」だと、ほとんどがmultipartになっていると思うのですが・・・ その切り分けをしてみてください。
質問者
お礼
ひとまずmultipartの前提で実装することにしました。どうもありがとうございます。multipart以外で送られてくるものについては、Try & Errorでその都度実装することにします。
補足
どうもありがとうございます。 私が試した範囲では、Gmailのmailer-daemonはmultipartになっていませんでした。text/plainのpartに Delivery to the following recipient failed permanently: xxxxxxxx.gmail.com Technical details of permanent failure: Google tried to deliver your message, but it w.................. のような感じです。 お手元のメールが全てmultipartなのであれば、Gmailだけ特別なのかもしれませんね。となると、Gmailだけ特別扱いしてやれば行けそうな気がしてきました。