rake 任务上的 ActionMailer 循环每次运行时都会发送一封额外的邮件
ActionMailer loop on rake task send an extra mail every time it runs
我想不通,
我有这个 class
class UserMailer < ActionMailer::Base
def apps_remainder_email()
#apps array ..which basically have 3 records in it
apps.each do |rec||
mail(to: user.email, subject: 'Apps Remainder').deliver
end
end
end
当我尝试在 rails 控制台 UserMailer.apps_remainder_email
中调用上面的内容时,它工作正常并发送了三封电子邮件,但是当我将其添加为抽取任务时,它发送了四封而不是三封即始终是最终电子邮件的副本。
这是我的抽佣任务
task daily: [:environment] do
UserMailer.apps_remainder_email.deliver
end
我认为这是因为我的任务中有一个 .deliver,但如果没有那个 .deliver,根本不会发送任何邮件。
$ rake daily --trace
** Invoke daily (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute daily
您的 UserMailer
class 不应自行调用 deliver
。
相反,您的 rake 任务应该调用 deliver
。
因此从 UserMailer
class 中删除 deliver
并将逻辑放入您的抽取任务中:
task daily: [:environment] do
apps.each do |rec||
UserMailer.apps_remainder_email(rec).deliver
end
end
我想不通, 我有这个 class
class UserMailer < ActionMailer::Base
def apps_remainder_email()
#apps array ..which basically have 3 records in it
apps.each do |rec||
mail(to: user.email, subject: 'Apps Remainder').deliver
end
end
end
当我尝试在 rails 控制台 UserMailer.apps_remainder_email
中调用上面的内容时,它工作正常并发送了三封电子邮件,但是当我将其添加为抽取任务时,它发送了四封而不是三封即始终是最终电子邮件的副本。
这是我的抽佣任务
task daily: [:environment] do
UserMailer.apps_remainder_email.deliver
end
我认为这是因为我的任务中有一个 .deliver,但如果没有那个 .deliver,根本不会发送任何邮件。
$ rake daily --trace
** Invoke daily (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute daily
您的 UserMailer
class 不应自行调用 deliver
。
相反,您的 rake 任务应该调用 deliver
。
因此从 UserMailer
class 中删除 deliver
并将逻辑放入您的抽取任务中:
task daily: [:environment] do
apps.each do |rec||
UserMailer.apps_remainder_email(rec).deliver
end
end