2009-12-24 100 views
0

我正在开发测试应用程序并在我的工作电脑上运行整个事情。我正在使用我的公司邮件服务器发送邮件。它正常工作正常。我想知道如何处理任何条件,如邮件服务器无法从我的电脑到达。 据我了解,rails应用程序只是发送邮件,就是这样。无法知道邮件是否到达收件人,收件人邮件标识是否正确等。 有关如何处理此方案的任何想法? 感谢和问候, Anjali从rails或actionmailer发送电子邮件的状态

回答

1

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

第一个问题 - 确保电子邮件被企业邮件服务器(即本例中的邮件中继)接受。为了解决这个问题,你可以建立一个本地的消息队列(将它们存储在数据库,队列服务器等等) - 然后用一个单独的工作进程发送它们,这将从队列中提取每条消息,尝试传递并删除它只有当它被邮件中继接受时。

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

但在这两种情况下,你不会得到关于该消息被交付给最终收款方的任何信息 - 如电子邮件地址是否有效,用户的邮箱是不是满等

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

这是它在邮件列表管理软件中完成的方式 - 例如,phpList在完全一样的方式。

0

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

+0

当然。尽管你自己不需要这样做,但是已经有很多邮件队列了。每个不重要的SMTP服务器都会这么做:) – radiospiel 2012-01-31 10:51:34

+0

不够公平。这绝对是一条路,尽管出于某种原因,我提到上述原因是有原因的。 。 。 – Rilindo 2012-01-31 19:23:39

+0

不用担心。我们最近刚刚开始讨论这个问题,当时有人建议在rails中实现一个队列,这个队列可以存放邮件,以便我们以后可以发送邮件。如果生成邮件是问题(因为,例如将模型转换为最终邮件的代码),那么排队肯定会成为一种方式。人们经常为此使用delayedjob或resque。) – radiospiel 2012-02-01 20:53:34

相关问题