ActionMailer raise_delivery_errors在生产中应该是真还是假?

dwa*_*mac 4 ruby ruby-on-rails actionmailer

如果为true,它将向用户发送错误消息.如果错误的传递错误不会被注意到.

推荐的方法是什么?

Bry*_*rns 6

我们只是将一个应用程序投入生产,当我们尝试发送邮件时,我们的ISP邮件服务器经常返回"451个虚拟机忙"错误.

这两个答案对我们都没有好处:如果我们向用户返回错误,我们就会将基础设施问题传递给他们; 如果我们不这样做,他们就不会得到他们的邀请/确认/通知/其他,没有人知道原因.

相反,我们决定设置delayed_job,并始终通过它发送邮件; 它会自动重试,我们可以看到(来自数据库中的作业队列表)消息是否正在堆积.(设置起来非常简单 - 最困难的部分是确保工作线程正在运行,这对我们的Monit配置来说是一个简单的补充.)

(Bonus:这是我写的一个初始化程序,用于在生产中延迟邮件,但仍然直接在开发和测试中发送它:http://gist.github.com/178125)