如果为true,它将向用户发送错误消息。 如果错误的传递错误不会被注意到。
处理此问题的推荐方法是什么?
答案 0 :(得分:6)
我们只是将一个应用程序投入生产,当我们尝试发送邮件时,我们ISP的邮件服务器经常会返回“451个虚拟机忙”错误。
这两个答案对我们都没有好处:如果我们向用户返回错误,我们就会将基础设施问题传递给他们;如果我们不这样做,他们就不会得到他们的邀请/确认/通知/无论如何,没有人知道原因。
相反,我们决定设置delayed_job,并始终通过它发送邮件;它会自动重试,我们可以看到(来自数据库中的作业队列表)消息是否正在堆积。 (设置起来非常简单 - 最困难的部分是确保工作线程正在运行,这对我们的Monit配置来说是一个简单的补充。)
(Bonus:这是我写的一个初始化程序,用于在生产中延迟邮件,但仍然直接在开发和测试中发送它:http://gist.github.com/178125)
答案 1 :(得分:3)
您可能会在邮件程序生命周期的某个时刻遇到传递错误。
我建议
根据邮件的具体情况选择以上其中一种。
答案 2 :(得分:0)
您至少应该让用户(以及您自己)知道出现了问题,否则他们(和您)将不知道传递是否失败或者邮件是否只是卡在垃圾邮件文件夹中。
如果你没有收到很多错误,你可以让500错误通过,虽然这对用户来说可能有点不愉快。更好的是抓住&记录异常并让用户重试。
答案 3 :(得分:0)
如果你在本地服务器上运行postfix,如果电子邮件可以成功发送到postfix(应该总是会发生),那么就不会有问题。