我的生产应用程序运行在AWS上,但是某些邮件上的活动作业-deliver_later存在问题。我正在开发中成功发送所有带有deliver_later的电子邮件,但生产中有一些不同之处。某些邮件可以与deliver_later一起使用,但不能与我的欢迎邮件一起使用(欢迎新用户)。因此,我必须在此欢迎邮件上设置deliver_now,以使其实际发送电子邮件。

//doesn't work, email is not sent
UserMailer.welcome_email(self).deliver_later
//works
UserMailer.welcome_email(self).deliver_now


服务器上的日志文件显示了这一点,当我使用deliver_later时仅此而已:


[ActiveJob]将ActionMailer :: DeliveryJob排队(作业ID:
d7114-464e-4a90-9721-126650)到具有参数的Async(mailers):
“ UserMailer”,“ welcome_email”,“ deliver_now”,#>


任何帮助,将不胜感激。谢谢。

最佳答案

deliver_now一次发送一封电子邮件。

如果使用deliver_later,则必须使用像Sidekiq这样的ActiveJob运行程序,您可以看到此gist Sending emails with ActionMailer and Sidekiq,对于发送的基本Sidekiq电子邮件也可以看到此信息。

使要通过活动作业传递的电子邮件入队。作业运行时,它将使用deliver_now发送电子邮件。

UserMailer.welcome_email(self).deliver_later(wait: 1.hour)


method-i-deliver_later

基本上,deliver_later是异步的。使用此方法时,此刻不会发送电子邮件,而是将其发送到作业队列中。如果作业未运行,则不会发送电子邮件。无论工作状态如何,deliver_now都会立即发送电子邮件。 Here您可以查看有关交付方法的文档。

关于ruby-on-rails - 在AWS上带有liver_later的Rails Action Mailer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49504268/

10-09 07:57