それは非常に古い質問です。あなたが解決したかどうかはわかりません。
MSDN によると: http://msdn.microsoft.com/en-us/library/swas0fwc(v=vs.100).aspx
Sendを使用して複数の受信者に電子メールを送信し、SMTP サーバーが一部の受信者を有効として受け入れ、他の受信者を拒否する場合、Sendは受け入れられた受信者に電子メールを送信し、
SmtpFailedRecipientsExceptionがスローされます。例外には、拒否された受信者のリストが含まれます。
これは、MSDN から取得したこの例外をキャッチする例です。
try {
client.Send(message);
}
catch (SmtpFailedRecipientsException ex) {
for (int i = 0; i < ex.InnerExceptions.Length; i++) {
SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
if (status == SmtpStatusCode.MailboxBusy || status == SmtpStatusCode.MailboxUnavailable) {
Console.WriteLine("Delivery failed - retrying in 5 seconds.");
System.Threading.Thread.Sleep(5000);
client.Send(message);
}
else {
Console.WriteLine("Failed to deliver message to {0}", ex.InnerExceptions[i].FailedRecipient);
}
}
}
ここに完全な例: http://msdn.microsoft.com/en-us/library/system.net.mail.smtpfailedrecipientsexception.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
内部的にSend
は、statuscode
返された fromRCPT TO
コマンドを使用して、適切な例外を発生させます。
PrepareCommand
のRecipientCommand.Send
メソッドでの実装を確認してくださいsmtpTransport.SendMail
(このメソッドは によって内部的に呼び出されSmtpClient.Send
ます)。メソッドで解析されたRCPT TO
を取得するために使用され、それに応じてが発生します。ただし、VRFY と RCPT はどちらも信頼性が高くありません。これは、メール サーバーがスパム対策として応答を遅らせる (NDR を調整する) か、応答を飲み込む傾向があるためです。StatusCode
CheckResponse
SmtpFailedRecipientsException