验证在rails上的ruby中的退回电子邮件ID

时间:2011-12-14 08:11:46

标签: ruby-on-rails ruby ruby-on-rails-3

我正在ruby on rails上构建一个电子邮件应用程序,我有一个基本版本,用于使用AWS SES发送电子邮件但最近我收到了来自AWS团队的邮件,说我发送的大部分电子邮件已经退回如果我向退回的电子邮件ID发送电子邮件,他们将停止我的帐户。

在向任何地址发送电子邮件之前,是否有任何方法可以验证该电子邮件是否存在且是否有效。

任何宝石或周围的工作都会对我有很大的帮助

1 个答案:

答案 0 :(得分:1)

这样做的一般方法纯粹是从系统设计的角度来看。如果您要从您的某个用户收集电子邮件地址并定期向他们发送电子邮件,或者事件发生等,那么您应首先要求他们“验证他们的电子邮件地址”。这通常涉及生成唯一令牌,将其放入数据库,与用户链接,然后发送包含带有该唯一令牌的URL的电子邮件。用户单击该链接,该链接将转到Rails应用程序中与该用户匹配的令牌中的控制器。如果他们无法关注该链接,则他们无法阅读您的电子邮件,因此请勿向该地址发送更多电子邮件。

如果您通过“其他方式”获得了电子邮件地址,则需要在外发电子邮件上设置退货路径地址(退回将在此处发送),然后检查该邮箱是否有反弹。我也经常怀疑人们如何发现电子邮件地址列表并非来自用户同意与您的网站达成协议。

可以使用Mail gem来执行此操作,但您需要知道如何设置将电子邮件传输到Rails应用程序的SMTP服务器,如果没有先前的经验,这不是直截了当的。您还可以使用变量返回路径地址(VERP),例如<some unique hash>+bounces@your-domain.com,其中<some unique hash>引用系统中的电子邮件地址。这消除了尝试解析和解释退回邮件的痛苦,因为它发送的地址告诉您退回的收件人是谁。