当邮箱不可用时,从MailMessage中删除收件人
本文关键字:MailMessage 删除 收件人 | 更新日期: 2023-09-27 18:27:38
我使用的是System.Net.Mail
的SmtpClient
类。当SmtpClient拒绝电子邮件地址时,我想从MailMessage.To
字段中删除无效收件人。这可能吗?这是我的代码,但如果message.To
包含客户端无法发送的电子邮件,它会抛出smtpClient.Send(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<电子邮件已删除#>:中继访问被拒绝
当其中一个收件人无效时,Send方法抛出SmtpFailedRecipientsException。您应该查看msdn中SmtpFailedRecipientsException的示例http://msdn.microsoft.com/en-us/library/system.net.mail.smtpfailedrecipientsexception(v=vs.110).aspx
对于5.7.1响应,您实际上会得到一个普通的SmtpException,而不是SmtpFailedRecipientException/SmtpFailedRecepientsException-请参阅此处的.NET Framework源代码-因此,您必须检查异常的Message属性以识别相应的地址(例如,使用String.Contains)(如果包含)。