harukiです。
メールを送信するサイトの場合、メールアドレスのクリーニングは定期的に行うべきです。 そのためにはエラーメールを解析しなければなりません。
そこで、エラーメールの種類をまとめてみました。
SMTPエラー
存在しないメールアドレスや、正しい形式でないメールアドレスの場合は、 DoCoMo,au,SoftBankの3キャリアともSMTPエラーになります。
例として、以下の条件でメールを送信したとします。
From: sender@example.com
Return-Path: bounce@example.com
To: アドレス@docomo.ne.jp
MTAにより異なりますので、ここではPostfixを例にします。
Postfixではmultipart/reportのメールがbounce@example.comに届きます
(※ 必要な情報のみに省略しています)
From: MAILER-DAEMON@example.com (Mail Delivery System) Subject: Undelivered Mail Returned to Sender To: bounce@example.com Content-Type: multipart/report; report-type=delivery-status; boundary="boudary/example.com" This is a MIME-encapsulated message. --boudary/example.com Content-Description: Notification Content-Type: text/plain (メッセージ) <アドレス@docomo.ne.jp>: host mfsmax.docomo.ne.jp[203.138.180.240] said: 550 Unknown user アドレス@docomo.ne.jp (in reply to end of DATA command) --boudary/example.com Content-Description: Delivery report Content-Type: message/delivery-status X-Postfix-Sender: rfc822; sender@example.com Final-Recipient: rfc822; アドレス@docomo.ne.jp Action: failed Status: 5.0.0 Diagnostic-Code: X-Postfix; host mfsmax.docomo.ne.jp[203.138.180.240] said: 550 Unknown user アドレス@docomo.ne.jp (in reply to end of DATA command) --boudary/example.com Content-Description: Undelivered Message Content-Type: message/rfc822 (ヘッダ) From: sender@example.com To: アドレス@docomo.ne.jp (本文) --boudary/example.com--
Content-Type: message/rfc822のToから、「アドレス@docomo.ne.jp」を取得できます。
特殊なエラーメール
auとSoftBankでは、上記のエラーに加えて、一旦受信されてから送り返されてくるものがあります。
種類は4つあります。
(※ ここでも必要な情報のみに省略しています)
- 1. multipart/report
- 2. text/plain
- 3. multipart/mixed
- 4. multipart/mixed(自動転送先)
1. multipart/report
Postfixの例で書いたものがサーバから送られてきます。
auとSoftBankにこのタイプがあります。
2. text/plain
拒否している場合のauのエラーメールです。
※ <アドレス@ezweb.ne.jp>の行がない場合もあります。
Content-Type: text/plain; charset=iso-2022-jp From: Postmaster@ezweb.ne.jp To: bounce@example.com Subject: Mail System Error - Returned Mail 次のあて先へのメッセージはエラーのため送信できませんでした。 <アドレス@ezweb.ne.jp> 送信先メールアドレスが見つからないか、 送信先メールサーバの事由により送信できませんでした。 メールアドレスをご確認の上、再送信してください。 Each of the following recipients was rejected by a remote mail server.