代码之家  ›  专栏  ›  技术社区  ›  dwaynemac

ActionMailer在生产中是否应提出“交货错误”是对的还是错的?

  •  4
  • dwaynemac  · 技术社区  · 16 年前

    如果为真,它将向用户发送错误消息。 如果不注意到错误的交付。

    建议的处理方法是什么?

    4 回复  |  直到 13 年前
        1
  •  3
  •   Ryan Neufeld    16 年前

    很可能你会在邮递员的生命周期中的某个时刻遇到投递错误。

    我也推荐

    • 提高交付错误=真

      捕捉错误,并向用户提供某种反馈

    • 提出交付错误=错误不要抓住任何东西,忽略失败。

    取决于你的邮寄者选择了上面的哪一个。

        2
  •  6
  •   Bryan Stearns    16 年前

    我们只是将一个应用程序投入生产,当我们尝试发送邮件时,ISP的邮件服务器经常返回“451 spool busy”错误。

    这两个答案都不适合我们:如果我们向用户返回错误,我们就将基础设施问题传递给他们;如果我们不返回错误,他们就不会收到他们的邀请/确认/通知/任何东西,也没有人知道原因。

    相反,我们决定设置延迟的作业,并且总是通过它发送邮件;它会自动重试,并且我们可以(从数据库中的作业队列表)看到消息是否堆积。(设置起来也很简单——最困难的部分是确保工作线程正在运行,这是对monit配置的简单添加。)

    (奖励:这里有一个初始值设定项,我写它来延迟邮件的生产,但仍然在开发和测试中直接发送: http://gist.github.com/178125 )

        3
  •  0
  •   klochner    16 年前

    你至少应该让用户(和你自己)知道出了什么问题,否则他们(和你)将不知道是发送失败还是邮件被卡在了垃圾邮件文件夹中。

    如果您没有得到很多错误,您可以让500个错误通过,尽管这对用户来说可能有点不愉快。最好是捕获并记录异常,让用户重试。

        4
  •  0
  •   Joe Van Dyk    13 年前

    如果您在本地服务器上运行postfix,那么如果电子邮件可以成功发送到postfix(这应该总是发生的),那么就不会有问题。