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

本文关键字:MailMessage 删除 收件人 | 更新日期: 2023-09-27 18:27:38

我使用的是System.Net.MailSmtpClient类。当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<电子邮件已删除#>:中继访问被拒绝

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

当其中一个收件人无效时,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)(如果包含)。