C# 邮箱不可用时从MailMessage中删除收件人
我正在使用System.Net.Mail的SmtpClient类。当SmtpClient拒绝电子邮件地址时,我想从MailMessage.to字段中删除无效的收件人。这可能吗?这是我的代码,但它会在smtpClient.Sendmessage if message.To上抛出。它包含一封客户端无法发送给它的电子邮件,当所有电子邮件都有效时,它就可以正常工作C# 邮箱不可用时从MailMessage中删除收件人,c#,email,smtp,C#,Email,Smtp,我正在使用System.Net.Mail的SmtpClient类。当SmtpClient拒绝电子邮件地址时,我想从MailMessage.to字段中删除无效的收件人。这可能吗?这是我的代码,但它会在smtpClient.Sendmessage if message.To上抛出。它包含一封客户端无法发送给它的电子邮件,当所有电子邮件都有效时,它就可以正常工作 public void SendEmail(Machine machine) { var message =
public void SendEmail(Machine machine)
{
var message = new MailMessage();
var smtpClient = new SmtpClient(smtpServer);
message.From = new MailAddress(emailSender);
foreach (var recipient in machine.Recipients)
{
message.To.Add(recipient);
}
message.Subject = string.Format(emailSubject, machine.Name, machine.Address);
message.Body = ""; // body here
message.Priority = MailPriority.High;
smtpClient.Send(message);
}
错误:
交易失败。服务器响应为:5.7.1
对于5.7.1响应,您实际上会得到一个普通的SmtpException,而不是SmtpFailedRecipientException/SMTPFailedRecipientSexException-请参阅.NET Framework源代码-,因此您必须检查异常的消息属性以识别相应的地址,例如,使用String.Contains,如果包括。文档仅建议在五秒钟后重试。这不是问题的答案。SMTPFailedRecipient异常具有属性FailedRecipient和InnerException。在示例中是重试发送消息的循环,但您不必重试发送消息,您只能获得ex.InnerExceptions[i].FailedRecipient或ex.FailedRecipient。我从来没用过,但我想这可能是你问题的答案。