【发布时间】:2021-10-26 22:01:05
【问题描述】:
我们使用 Office 365 SMTP AUTH 客户端提交发送电子邮件,但是某些消息发送失败并返回错误“发送消息失败”,通过代码我可以尝试重新发送这些消息,直到发送电子邮件。
【问题讨论】:
我们使用 Office 365 SMTP AUTH 客户端提交发送电子邮件,但是某些消息发送失败并返回错误“发送消息失败”,通过代码我可以尝试重新发送这些消息,直到发送电子邮件。
【问题讨论】:
好吧,我不会以“直到成功”的方式这样做,因为它非常冒险,但可以通过代码轻松实现:
while(true)
{
try
{
SendEmail();
break;
}
catch(Exception ex)
{
}
}
现在考虑 - 如果电子邮件提供商/服务器出现故障怎么办?您的应用会挂起,直到服务器重新开始正常工作。
您需要设置一些阈值和重试策略 - 例如 - 在第一次失败后等待 5 秒并重试,在第二次失败后等待 30 秒并重试,依此类推。在第 5 次失败后终止进程或执行其他操作。
【讨论】:
while(true) 循环。我可能会使用有限数量的最大重试尝试。此外,我会在尝试之间引入一些延迟,因此接收方有时间从潜在的错误中恢复。