【问题标题】:retry to send failed messages sent via C# in ASP .NET在 ASP .NET 中重试发送通过 C# 发送的失败消息
【发布时间】:2021-10-26 22:01:05
【问题描述】:

我们使用 Office 365 SMTP AUTH 客户端提交发送电子邮件,但是某些消息发送失败并返回错误“发送消息失败”,通过代码我可以尝试重新发送这些消息,直到发送电子邮件。

【问题讨论】:

    标签: c# email


    【解决方案1】:

    好吧,我不会以“直到成功”的方式这样做,因为它非常冒险,但可以通过代码轻松实现:

    while(true)
    {
        try
        {
            SendEmail();
            break;
        }
        catch(Exception ex)
        {
            
        }
    }
    

    现在考虑 - 如果电子邮件提供商/服务器出现故障怎么办?您的应用会挂起,直到服务器重新开始正常工作。

    您需要设置一些阈值和重试策略 - 例如 - 在第一次失败后等待 5 秒并重试,在第二次失败后等待 30 秒并重试,依此类推。在第 5 次失败后终止进程或执行其他操作。

    【讨论】:

    • 肯定不会在没有任何控制的情况下使用while(true) 循环。我可能会使用有限数量的最大重试尝试。此外,我会在尝试之间引入一些延迟,因此接收方有时间从潜在的错误中恢复。
    • @CsabaBenko 当然,我包括在答案中:)
    • 感谢您的回复,Microsoft 有每分钟 30 封电子邮件的限制,我想当我超过每分钟 30 封电子邮件的限制时,电子邮件会被丢弃。 5 分钟后重试,10 分钟后重试第二次对我来说没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2023-03-15
    • 2012-07-31
    • 2014-02-08
    • 2012-08-21
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多