よくある、開封確認の通知ではなく・・・。
.net c#で、ある機能のアプリを作成し、動作ログをメールで送信する仕組みにしていた。
実は、某Cレンタルサーバでは特に異常が無かったのだが、そのレンタルサーバのメール不具合が多い為、たまりかねてXSERVERに引っ越しを行った。
すると、バックアップ結果メールの他に、何故か、以前は届かなかった「Successful Mail Delivery Report」というメールが届き出した。
こちらはホスト svXXXX.xserver.jp のメールシステムです。
以下に示す宛先に対して、お送りいただいたメッセージは正常に配信されました。
もしメッセージがメールボックスに配信された場合、以降の通知は受け取りません。
それ以外の場合、他のシステムからのメール配信エラーの通知を受け取る可能性があります。
メールシステムの詳細
宛先: info@hoge.co.jp
配信経路: maildrop
ステータス: maildrop
サービスを経由して配信されました。
宛先: info@hoge.com
配信経路: hogeserver.com[999.999.999.999]:25
ステータス: 250 2.0.0 Ok
メッセージは12345ABCDEとしてキューに入れられました。
なにこれ?
XSERVERに問い合わせすると、メーラーの配信確認オプションが入っている場合等に送付されるものだという回答だった。
よくある「受信者の開封確認」ではなく、配信確認として送付先サーバに対して投げかけたレスポンスに対するもの。
だがしかし、既成メーラでは送っていないし、勿論Outlookでもない、手組のC#プログラムである。
電子メールの配信通知オプション
調べると、送信メールにDeliveryNotificationOptions
という電子メールの配信通知オプションを付け加えると、対応しているサーバであれば、返信をしてくれるという事だった。
※ソース
Delay | 4 | 配信が遅延した場合、通知します。 |
Never | 134217728 | すべての状況下で通知を生成する必要はありません。 |
None | 0 | 通知情報は送信されません。 メール サーバーは、構成された動作を使用して、配信通知を生成するかどうかを決定します。 |
OnFailure | 2 | 配信がエラーになった場合、通知します。 |
OnSuccess | 1 | 配信が成功した場合、通知します。 |
プログラムを調べると、配信通知オプションのDeliveryNotificationOptions
にこのDeliveryNotificationOptions.OnSuccess
値を設定してしまっていた。
mailMsg.DeliveryNotificationOptions =
DeliveryNotificationOptions.Delay // 配信が遅延した場合、通知します。
| DeliveryNotificationOptions.OnFailure // 配信がエラーになった場合、通知します。
| DeliveryNotificationOptions.OnSuccess; // 配信が成功した場合、通知します。
何故かと言うと、メール送信プログラムのサンプルで、例そのままで使ってしまっていたという、情けない落ちだった。
以前の某Cレンタルサーバは単に対応していなかっただけで、XSERVERが何かかやらかしたのかと思ったが、こちらのサーバの方が機能が充実していただけだった。だから、レンタルサーバを替えたタイミングで受信し始めたのだ。
DeliveryNotificationOptions
を削除する事で、このメール配信はめでたく無くなった。
This is the mail system at host svXXXX.xserver.jp.
Your message was successfully delivered to the destination(s)
listed below. If the message was delivered to mailbox you will
receive no further notifications. Otherwise you may still receive
notifications of mail delivery errors from other systems.
The mail system
<info@hoge.co.jp>: delivery via maildrop: delivered via maildrop service
<info@hoge.com>: delivery via hogeserver.com[999.999.999.999]:25:
250 2.0.0 Ok: queued as 12345ABCDE