如何使用ActionMailer测试邮件是否成功发送?

时间:2010-11-14 23:03:22

标签: ruby-on-rails ruby email actionmailer

我在Rails 3中使用ActionMailer定期发送电子邮件。我需要知道电子邮件是否正确发送(尽可能这样做)。

  @lists.each do |list|
    email = Reminder.deadline_reminder(list)
    email.deliver
  end

是否有电子邮件对象的属性(来自Mail库的Mail :: message类)会告诉我发送是否正确(没有连接问题,身份验证问题等)?我查看过Github上的课程,但一直无法解决问题。

1 个答案:

答案 0 :(得分:4)

这一切都取决于你认为成功的原因。

您可以测试您的代码是否发送了消息。您通常可以检查日志以查看邮件转发主机是否收到它并将其移至目的地。

但是,只有专有邮件系统才支持送货回执。由于隐私问题以及邮件客户端供应商无法就如何做到这一点达成一致,SMTP不会也可能永远不会。因此,即使它一直传送到预定目的地,也无法知道该人是否阅读过它。

您最好的选择是在用户点击的消息中添加一个链接,该链接将使用该消息唯一的令牌来勾选服务器上的应用程序。当应用程序看到令牌时,它会设置一个标志,让您知道他们收到了消息并且至少阅读了有关单击链接的部分。然后,如果在给定时间内必须有响应,您还可以跟踪消息的发送时间,如果在时间限制内没有收到令牌,则会升级。