【问题标题】:How to test whether a mail was sent successfully using ActionMailer?如何使用 ActionMailer 测试邮件是否发送成功?
【发布时间】:2010-11-15 11:50:05
【问题描述】:

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

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

是否有电子邮件对象的属性(邮件库中的 Mail::message 类)可以告诉我发送是否正确(没有连接问题、身份验证问题等)?我浏览了 Github 上的课程,但无法弄清楚任何事情。

【问题讨论】:

    标签: ruby-on-rails ruby email actionmailer


    【解决方案1】:

    这一切都取决于你认为什么是成功的。

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

    但是,只有专有邮件系统支持投递收据。 SMTP 不会也可能永远不会,因为隐私问题和邮件客户端供应商无法就如何做达成一致。因此,即使它一直被送到预定的目的地,也无法知道人们是否阅读了它。

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

    【讨论】:

    • 好主意。您可以通过在电子邮件中添加一个非常小的图形来跟踪打开情况。当他们打开电子邮件时,它会从您的服务器下载,您会知道他们打开了您的电子邮件。这就是 MailChimp 轨道的打开方式。如果未启用图像,则不起作用。 kb.mailchimp.com/article/how-open-tracking-works
    • 正确,如果他们的邮件客户端不显示图形,或者用户指示它不加载图像,例如许多移动和基于 Web 的客户端,则会失败。
    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 2015-08-23
    • 1970-01-01
    • 2019-11-24
    • 2011-01-05
    • 2011-12-19
    • 2023-03-13
    • 2013-07-31
    相关资源
    最近更新 更多