15

以下のコードは正常に動作しています。ただし、特定のアドレス (b@technospine.com) に失敗または成功の通知を受け取る必要があります。しかし、FromMailアドレス(A@technospine.com)に配信通知メールが届いています。この問題を解決するのを手伝ってくれませんか?

SmtpClient smtpClient = new SmtpClient();

MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress("A@technospine.com", "BALA");
MailAddress adminAddress = new MailAddress("b@technospine.com");

smtpClient.Host = "Mail Server Name";
smtpClient.Port = 25;
smtpClient.UseDefaultCredentials = true; 

message.From = fromAddress;
message.To.Add(_sendTo); //Recipent email
message.Subject = _subject;
message.Body = _details;
message.IsBodyHtml = true;


message.Headers.Add("Disposition-Notification-To", "b@technospine.com");

message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;

message.ReplyTo = adminAddress;

smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.Send(message);
4

3 に答える 3

14

簡単な答えは、あなたが求めていることは、あなたが想定している直接的な方法では実行できないということです。

これは特定の条件でのみ機能します。最も簡単な説明は、メッセージの送信に使用している SMTP サーバーが、受信者の電子メール メッセージのドメインをホストしているサーバー (smtpClient の .HOST プロパティを設定するときに参照するサーバー) である場合です。そのため、ローカルの SMTP メール サーバー上の受信者にのみ送信していた場合、これはかなり確実に機能する可能性があります。ただし、それは使用されている特定の SMTP サーバー ソフトウェアに依存し、場合によってはその構成方法にも依存します。

これがなぜなのかを説明するには、目的の電子メール アドレスを実際にホストするメッセージを受信する最後の SMTP メール サーバーだけが、これが有効な電子メール アドレスであるかという質問に正式に答えることができることを理解する必要があります。メッセージがこの最終的な権限のあるサーバーに到達する途中で他の電子メール サーバーを通過する必要がある場合、そのメッセージは、その最終的な権限のあるサーバーに到達するまで、チェーン内の 1 つのサーバーから次のサーバーに順番に渡される必要があります。これは、特定のアドレスを認証するための保証された方法がないことを意味します。これを、一部のドメインがブラック ホールとして機能し、不正にアドレス指定されたメールを飲み込むように構成されているという事実と組み合わせると、その方法論に頼ることができない多くの理由があることがわかります。

そのため、外部ドメインへの多くのメッセージは、少なくとも 1 つの個別の SMTP サーバーにヒットする必要があり、そのサーバーがメールに応答または転送する方法に応じて、特定の受信ドメインの結果が決まります。実際、バウンスされたメッセージの FROM アドレスを監視することは、一部のホストが有効でないように見える場合にいくつかのメッセージをブラック ホールに入れるという以前のコメントのように、絶対確実ではありません。

于 2012-10-09T22:26:27.083 に答える
0

MSDNによると、.Send はSmtpFailedRecipientsException EDIT:をスローします。MESSAGEを 1 人以上の受信者に配信できない場合。例外の [失敗した受信者] プロパティで、その情報を見つけることができます。したがって、その例外をキャッチして、例外で探しているアドレスを検証すると、役立つ場合があります。

于 2012-10-09T21:48:16.650 に答える