我的生产应用程序运行在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/