我正在使用SmtpClient
类System.Net.Mail
。当SmtpClient拒绝电子邮件地址时,我想从MailMessage.To
字段中删除无效收件人。这可能吗?这是我的代码,但如果smtpClient.Send(message)
包含客户端无法发送的电子邮件(在所有电子邮件都有效的情况下工作正常),则会引发message.To
。
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< #email-removed#>:拒绝中继访问
答案 0 :(得分:0)
当其中一个收件人无效时,Send方法抛出SmtpFailedRecipientsException。您应该在msdn中查看SmtpFailedRecipientsException的示例 http://msdn.microsoft.com/en-us/library/system.net.mail.smtpfailedrecipientsexception(v=vs.110).aspx
答案 1 :(得分:0)
对于5.7.1响应,您实际上获得了一个简单的SmtpException而不是SmtpFailedRecipientException / SmtpFailedRecipientsException - 请参阅.NET Framework源代码here - ,因此您必须检查异常的Message属性识别相应的地址(例如使用String.Contains),如果包含的话。