这是我的问题。我正在向几个联系人发送电子邮件,如果存在无效的电子邮件地址,我会收到错误消息。
基本上,它可以正常工作,但如果有超过 1 封无效电子邮件,我将不会收到来自其他错误电子邮件地址的通知。
data = XMLProcessing.LoadAll();
foreach (XMLData.StructReceiver user in data.Receiver)
{
AddReceiver(user.Mail);
}
SetSubject(data.Body.Subject);
SetMessage(data.Body.Content);
SetSender(data.SenderReply.Sender);
SetReply(data.SenderReply.Replyer);
try
{
SMTP.Send(Message);
}
catch (SmtpFailedRecipientException e)
{
if (e.FailedRecipient.ToString() != data.SenderReply.Replyer)
{
Failed.Add(e.FailedRecipient.ToString());
}
}
finally
{
SMTP.Dispose();
}
我通过将联系人添加到列表中然后将此列表发送到我的个人电子邮件地址来接收通知,但捕获只会发生一次,即使有超过 1 个错误的地址。
最佳答案
参见 SmtpFailedRecipientsException
.请注意,这是一个不同的类,SmtpFailedRecipientsException。此类实际上是 SmtpFailedRecipientException
的子类(无 s)。
在捕获更一般的类型之前,您需要捕获 SmtpFailedRecipientsException
(更具体的类型)。
除了从其父级继承的字段外,它还提供了 InnerExceptions
(再次注意复数 s)。这是有关所有 地址的发送失败的异常集合。您可以按照 MSDN 文章中的描述对其进行迭代:
try
{
SMTP.Send(Message);
}
catch (SmtpFailedRecipientsException exs)
{
foreach (SmtpFailedRecipientException e in exs)
{
if (e.FailedRecipient.ToString() != data.SenderReply.Replyer)
{
Failed.Add(e.FailedRecipient.ToString());
}
}
}
catch (SmtpFailedRecipientException e)
{
if (e.FailedRecipient.ToString() != data.SenderReply.Replyer)
{
Failed.Add(e.FailedRecipient.ToString());
}
}
finally
{
SMTP.Dispose();
}
关于c# - SMTP 发送获取 SmtpFailedRecipientException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782665/