我使用smtp将邮件发送到多个地址,我想获取sendig失败的邮件地址。
message.To.Add(new System.Net.Mail.MailAddress("xxx@gmail.com"));
message.To.Add(new System.Net.Mail.MailAddress("yyy@gmail.co.in"));
message.To.Add(new System.Net.Mail.MailAddress("zzz@gmail.com"));
client.Send(message);
在上面的列表中,第一个和第三个邮件已发送,而第二个邮件则不能。 所以我想抓住失败的邮件地址(yyy@gmail.co.in)。
解决方案
答案 0 :(得分:0)
在client.Send()
方法中,您应该调用try-catch
块中的每个特定发送方法,然后提供失败。
另一个选择是重新抛出这样的异常并在你附加的代码中的catch
块中捕获它:
try {
client.Send(message);
}
catch (Exception e)
{
//do smth with it
}
告诉我们有关您的Send()
方法和client
对象的更多信息。那会让我们更加具体。
答案 1 :(得分:0)
如果您使用c#SmtpClient并且可以使用SendAsync方法,这非常简单
//client and MailMessage construction
client.SendCompleted += (sender, eventArgs) => {
string emailAddress = eventArgs.UserState as String;
if (eventArgs.Error != null) {
//an error occured, you can log the email/error
}
else //the email sent successfully you can log the email/success
};
client.SendAsync(mail, mail.Sender.Address);
如果你喜欢lambda可以用新的SendCompletedEventHandler(methodName)替换; 并有一个像
这样的方法... methodName(object sender, System.ComponentModel.AsyncCompletedEventArgs eventArgs)
{
string emailAddress = eventArgs.UserState as String;
if (eventArgs.Error != null) {
//an error occured, you can log the email/error
}
else //the email sent successfully you can log the email/success
}