3

我有一个问题,ActionMailer 有时不发送电子邮件。它是可重现的,并且在某些时候会影响某些人,尽管造成它的原因是个谜。

它静默失败,尽管config.action_mailer.raise_delivery_errors = true已设置。

它进入 mail() 例程,声称它已经渲染了模板:

Rendered notifier/notify_comment.html.erb (0.9ms)

然后跳过交付并移动到下一个交付。下一个渲染和交付没有问题。发送电子邮件时,它们也会打印到控制台,所以我可以看到它。每封邮件的内容都是一样的,只是收件人不同。

我不明白为什么这会是断断续续的。

我该如何调试呢?

4

1 回答 1

4

每个邮件程序实例只能发送 1 封电子邮件。

您在邮件程序中是否有类似这样的代码?

@subscribers.each do |s|
  mail(
    :to => s.email,
    :subject => "Foo Foo",
    :from => "someone@example.com", 
    :template_name => 'template_name'
  ).deliver
end

这似乎不起作用。遍历邮件程序之外的订阅者,并调用一次:

在控制器或模型中:

@subscribers.each do |s|
  Notifier.send_to_subscriber(s, @comment)
end

这是我在 Rails 3.2.2 中的经验。FWIW,我认为发生的事情是邮件对象超出范围。

这种方法可能会很慢,因此请务必在单独的线程中发送电子邮件。

参考与思路:如何使用 SendGrid 发送多封邮件?

于 2012-10-24T13:46:39.740 回答