4

这是我的问题。我正在向少数联系人发送电子邮件,如果电子邮件地址无效,我会发现错误。

基本上,它正在工作,但如果有超过 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 个错误地址。

4

1 回答 1

2

SmtpFailedRecipientsException。请注意,这是一个不同的类,SmtpFailedRecipient s Exception。这个类实际上是子类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();
}
于 2015-04-21T20:45:11.270 回答