代码之家  ›  专栏  ›  技术社区  ›  JL. Hans Passant

电子邮件错误通知的最佳做法是什么

  •  0
  • JL. Hans Passant  · 技术社区  · 15 年前

    这个问题与语言无关。

    我有一个应用程序在循环中处理请求。在每个请求的循环过程中,将执行多个操作。这些操作位于try/catch/log块中。 我现在扩展此功能,以通过电子邮件通知管理员严重错误。

    这一切都很容易,除了一件事。我们依靠客户机来实现他们自己的电子邮件传递冗余,根据经验,我知道总会有一个客户机只有一个SMTP交换服务器,这必然会不时下降。

    因此,我们面临的困境是:

    场景1(在发送失败时不要处理错误)-当我向管理员发送电子邮件并且SMTP关闭时,它将中断应用程序(应用程序将停止运行,并且其他循环将停止处理,因为错误未处理),这意味着对应用程序有利的错误报告突然成为99/100重新发送的原因。请求1有问题,因此无法处理请求。

    场景2(在发送失败时处理异常)-这意味着我将发送代码包围在try/catch/log块中,太好了!应用程序处理除一个以外的所有请求99个,但是管理员现在没有通过电子邮件通知这一个错误,因为当它试图发送SMTP时已关闭,并且该错误只是被记录到应用程序日志中,一次不检查该日志数天(甚至数周)的管理员现在无法知道发生了错误。

    所以,有没有一个双赢的方法来解决这个问题,或者我总是会处于一个失败的境地,并且在SMTP的摆布下。记住,管理电子邮件服务器冗余超出了我们的范围。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Antony    15 年前

    扩展场景2以记录应用程序日志中哪些条目未通过电子邮件发送,并定期轮询此日志中的未发送条目并尝试重新发送它们-最终,SMTP服务将再次可用。(您可能希望阻止任何重新发送错误返回重新发送队列tho…)

        2
  •  1
  •   Anon.    15 年前

    我建议“双赢”的方法是让一个服务器管理员 管理 服务器,而不是当他的邮件服务器关闭时完全无法访问的服务器,并且之后不需要检查它以查看他是否错过了任何通知。