我添加了以下代码。但无法发送批量邮件。
的Gemfile
gem 'delayed_job_active_record'
控制器
def send_news_letter
@emails = Array.new
if params[:newsletter].present?
@newsletter = Newsletter.find(params[:newsletter].keys).first
end
if params[:students].present?
@emails = @emails + Student.all
#raise @emails.inspect
end
if params[:teachers].present?
@emails = @emails +Teacher.all
end
if params[:parents].present?
@emails = @emails + Parent.all
end
UserMailer.delay.send_multiple_email(@emails,@newsletter)
redirect_to newsletters_url, :notice => "Delivering Newsletter"
end
邮件收发器
class UserMailer < ActionMailer::Base
default from: "from@example.com"
def send_multiple_email(emails,newsletter)
@emails = emails
#raise @emails.inspect
@newsletter = newsletter
mail(:to => @emails.map(&:email), subject: "Deliver")
end
end
实际上它重定向了时事通讯的索引页面。但它不会发送邮件..
答案 0 :(得分:0)
你可以做的事情来检查发生了什么:
这是否正在开发中?作为初学者,我无法弄清楚如何在开发过程中同时运行bundle exec rake jobs work
和rails s
。我不得不停止服务器并执行rake任务,然后再次启动服务器。
询问数据库(例如使用rails c
)以确定作业是否已保存到数据库中。这样你就知道它已经准备就绪了。
找不到任何数据库记录?延迟作业会创建自己的表,因此显然您需要迁移数据库。根据Github使用命令:
rails generate delayed_job:active_record
rake db:migrate
查看有关如何使用它的Railscasts剧集。