电子邮件从rails或actionmailer发送状态

时间:2009-12-24 20:58:16

标签: ruby-on-rails actionmailer

我正在开发一个测试应用程序并在我的工作电脑上运行整个事情。我正在使用我的公司邮件服务器发送邮件。它正常工作正常。我想知道如何处理任何条件,如从我的电脑无法访问邮件服务器。 据我所知,rails应用程序只发送邮件,就是这样。没有办法知道邮件是否到达收件人,收件人邮件ID是否正确等。 有关如何处理这种情况的任何想法? 感谢致敬, 安贾尼

2 个答案:

答案 0 :(得分:1)

我相信你们在这里混合了两个问题,这些问题真的很无关。

第一个问题 - 确保公司邮件服务器接受了电子邮件(在这种情况下是邮件中继)。要解决此问题,您可以构建本地消息队列(将它们存储在数据库,队列服务器等等) - 并使用单独的工作进程发送它们,这将从队列中提取每个消息,尝试传递并删除它只有它被邮件中继接受。

或者,如果您不需要对流程进行低级手动控制,您可以在计算机上设置简单的本地邮件服务器,而不是直接向公司邮件中继发送电子邮件,只需将其发送给您当地的邮件服务器。然后,它将确保电子邮件正确地传递给公司。

但在这两种情况下,您都不会获得有关邮件发送到最终收件人的位置的任何信息 - 例如电子邮件地址是否有效,用户邮箱是否已满,等等。

第二个问题 - 跟踪邮件传递错误。要正确彻底地解决此问题,您需要捕获从远程服务器退回给您的所有邮件并对其进行分析,因为许多错误在发送电子邮件的那一刻 - 但他们稍后会以邮件退回的形式回来。如果您捕获并跟踪这些反弹,您将能够捕获诸如完整邮箱,无效电子邮件,暂时交付失败等错误。

这是在邮件列表管理软件中完成的方式 - 例如,phpList以完全相同的方式运行。

答案 1 :(得分:0)

我想到了这个问题。我的想法是将消息存储到一个名为“mailqueue”的单独模型中,然后运行一个ruby脚本,只有当公司邮件服务器可用时才会从该邮件队列中提取和删除邮件(我已经有了代码来执行此操作,我相信)。当然,如果有更好的方法,我也欢迎它。