我正在使用delyed_jobs机制发送电子邮件。我有一个要求,其中一个名为" send_reports_at"必须添加和 当用户点击它时,日历控件将打开日期和时间,如果用户选择,则必须在某个时间发送电子邮件。
许多人建议我使用调度程序和cron作业,但我对此完全陌生。有些R& D,我在extended_jobs中使用了run_at功能。 我不知道是否正确,因为一次发送多封电子邮件。但它以前曾经工作过,而不是以前工作。 这是我的控制器代码:
def send_report_email
send_to_agents = params.has_key?("send_to_agents") && params["send_to_agents"] == "true"
if @report.update_attributes(params[:report])
set_photo_position(false)
@report.save
@good_emails.each do |email|
if @report.send_reports_at ==""
ReportMailer.delay.additional_emails(email, @user, @report)
else
report_time = Time.zone.parse(@report.send_reports_at).utc
ReportMailer.delay(run_at: report_time).additional_emails(email, @user, @report)
end
end
ReportMailer.delay.report_sent(@user, @report, @good_emails, @bad_emails, @unsubscribed_emails)
end
respond_to do |format|
format.json { render :json => { :success => true, :report_id => @report.id, :redirect => user_reports_url(current_user), :notice => 'Report was successfully sent!' } }
end
结束
请帮助如何继续这个?
答案 0 :(得分:0)
不要循环 @good_mails 。在一个延迟的工作任务中发送所有好的邮件。更改方法 additional_emails 中的逻辑以接收@good邮件数组并在那里循环。
j
我希望这会有所帮助。