gpt4 book ai didi

.NET SmtpClient : Is there a way to make sure that all emails resolve prior to sending MailMessage?

转载 作者:行者123 更新时间:2023-12-04 14:15:38 25 4
gpt4 key购买 nike

我正在使用 SmtpClient 向多个收件人发送电子邮件。当员工离开公司时,他们的电子邮件地址将失效。由于他们的电子邮件地址保留在我们的数据库中直到手动删除,因此尝试向他们发送电子邮件会导致我们的应用程序在 SmtpClient.Send(MailMessage) 期间引发异常。 .但是,尽管抛出了异常,它仍然会发送电子邮件。这是一个问题,因为我们希望通过阻止用户尝试保存记录并显示一条友好的消息建议从数据库中删除任何无效关联来处理此错误。

如果有一种方法可以遍历所有配方以确保它们都有效,那么我们可以阻止发送所有电子邮件,直到用户满足一组条件。

最佳答案

一个很老的问题,不知道你有没有解决。

根据 MSDN:http://msdn.microsoft.com/en-us/library/swas0fwc(v=vs.100).aspx

When sending e-mail using Send to multiple recipients and the SMTP server accepts some recipients as valid and rejects others, Send sends e-mail to the accepted recipients and then a SmtpFailedRecipientsException is thrown. The exception will contain a listing of the recipients that were rejected.



这是从 MSDN 中捕获此异常的示例:
try {
client.Send(message);
}
catch (SmtpFailedRecipientsException ex) {
for (int i = 0; i < ex.InnerExceptions.Length; i++) {
SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
if (status == SmtpStatusCode.MailboxBusy || status == SmtpStatusCode.MailboxUnavailable) {
Console.WriteLine("Delivery failed - retrying in 5 seconds.");
System.Threading.Thread.Sleep(5000);
client.Send(message);
}
else {
Console.WriteLine("Failed to deliver message to {0}", ex.InnerExceptions[i].FailedRecipient);
}
}
}

完整示例在此: http://msdn.microsoft.com/en-us/library/system.net.mail.smtpfailedrecipientsexception.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2

内部 Send使用 statuscodeRCPT TO 返回命令引发适当的异常。

检查 PrepareCommand 的实现在 RecipientCommand.Send smtpTransport.SendMail的方法(此方法由 SmtpClient.Send 内部调用)。它使用 RCPT TO获取 StatusCode然后在 CheckResponse 中解析方法和相应的 SmtpFailedRecipientsException被提出。但是,VRFY 和 RCPT 都不是很可靠,因为邮件服务器往往会延迟(限制 NDR)或吞下响应作为反垃圾邮件措施。

关于.NET SmtpClient : Is there a way to make sure that all emails resolve prior to sending MailMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13274005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com