邮箱不可用时从MailMessage中删除收件人

时间:2014-10-22 18:04:44

标签: c# email smtp

我正在使用SmtpClientSystem.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#>:拒绝中继访问

2 个答案:

答案 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),如果包含的话。