0

我正在开发一个测试应用程序并在我的工作电脑上运行整个事情。我正在使用我的公司邮件服务器发送邮件。它工作正常。我想知道如何处理任何情况,例如无法从我的电脑访问邮件服务器。据我所知,rails 应用程序只是发送邮件,仅此而已。无法知道邮件是否到达收件人,收件人邮件 ID 是否正确等。关于如何处理这种情况的任何想法?谢谢和问候, 安贾利

4

2 回答 2

1

我相信您在这里将两个问题混为一谈,它们实际上是完全无关的。

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

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

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

第二个问题 - 跟踪邮件传递错误。要正确彻底地解决此问题,您需要捕获从远程服务器退回给您的所有邮件并对其进行分析,因为许多错误在发送电子邮件时是未知的 - 但它们稍后会以邮件退回的形式返回. 如果您捕获并跟踪这些退回邮件,您将能够捕获错误,例如邮箱已满、无效电子邮件、只是暂时的递送失败等。

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

于 2009-12-24T23:18:39.227 回答
0

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

于 2009-12-24T21:19:23.027 回答