c# - SMTP 发送获取 SmtpFailedRecipientException

标签 c# smtp sendmail send smtpexception

这是我的问题。我正在向几个联系人发送电子邮件,如果存在无效的电子邮件地址,我会收到错误消息。

基本上,它可以正常工作,但如果有超过 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/

相关文章:

c# - RESTful WCF json 请求和 json 响应返回 null

c# - 如何绑定(bind)和 ConvertBack 分隔的 TextBox 字符串到 ObservableCollection<string>?

perl - 抄送、密件抄送无法与 Perl 上的 Net::SMTP 一起使用,具有多个电子邮件 ID

c# - 如何使用 .NET Framework 通过 SSL SMTP 发送电子邮件?

linux - 两台linux机器之间的SMTP

iphone - 如何通过电子邮件发送照片但收不到邮件屏幕

c# - BluetoothLEAdvertisementDataSection (ArgumentException)

c# - 在 Global.asax 中验证 HTTP 请求和返回特定 HTTP 响应的正确方法是什么?

php - SMTP 错误 : Failed to connect to server: Permission denied (13)

cakephp - 发送激活邮件,SMTP 服务器不接受密码