我正在使用 ActionMailer 和 Resque 对电子邮件进行排队。我对这两个都不是很熟悉,但我已经掌握了基础知识。现在我正在调试为什么在排队电子邮件时,电子邮件已发送但没有正文.. 令人费解。
当我执行ArtistReminderWorker.perform(8,2)
,电子邮件与正文一起发送。巨大的成功!
当我执行Resque.enqueue(ArtistReminderWorker, 8, 2)
电子邮件时,没有正文发送。神秘。
我认为这两个语句在功能上是相同的,不是吗?
起初我认为 Resque 工作人员无法查找记录,因此我将数据库查找从工作人员移到邮件命令之前的邮件程序中。
这是我的 Worker 和 Mailer 课程。
艺术家提醒工人.rb
class ArtistReminderWorker
@queue = :artist_reminders_queue
def self.perform(event_id, user_id)
ArtistReminderMailer.artist_reminder_email(event_id, user_id).deliver
end
end
Artist_reminder_mailer.rb
class ArtistReminderMailer < ActionMailer::Base
default from: 'no-reply@example.com'
def artist_reminder_email(event_id, user_id)
@user = User.find(user_id)
@event = Event.find(event_id)
@url = dashboard_url
subject = "You have an upcoming gig at #{@event.venue.name}"
mail(to: @user.email, subject: subject)
end
end
我的观点是:
views/artist_reminder_mailer/artist_reminder_email.slim
views/artist_reminder_mailer/artist_reminder_email.text.slim
如果我可以提供更多详细信息,请告诉我,提前谢谢!