繁体   English   中英

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

[英]email sent status from rails or actionmailer

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

我相信您在这里将两个问题混合在一起,这些问题确实无关。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM