可能重复:
how to keep sending emails to users every week depending on user date input in rails
我正在构建一个允许用户插入信息名称,日期和电子邮件的系统。我希望系统每隔7天自动向用户发送电子邮件。
这是我的邮件
class UserMailer < ActionMailer::Base
default from: "from@example.com"
def welcome_email(dop)
@dop = dop
@url = "http://example.com/login"
mail(:to => dop.mail, :subject => "Welcome to My Awesome Site")
end
end
这是控制器:
def create
@dop = Dop.new(params[:dop])
respond_to do |format|
if @dop.save
UserMailer.welcome_email(@dop).deliver
format.html { redirect_to @dop, notice: 'Dop was successfully created.' }
format.json { render json: @dop, status: :created, location: @dop }
else
format.html { render action: "new" }
format.json { render json: @dop.errors, status: :unprocessable_entity }
end
end
end
答案 0 :(得分:3)
您需要编写一个rake任务并通过cron调用该任务。
例如:
task :send_email => :environment do
Dop.where('last_email <= ?', 7.days.ago).each do |dop|
UserMailer.welcome_email(dop).deliver
dop.update_attribute('last_email', Time.now)
end
end
现在设置您的计算机Cron调度程序每隔几分钟调用此Rake任务以自动发送电子邮件。
Cron是一个Unix调度程序,它以预定的间隔执行程序。
您需要使用crontab -e
编辑crontab文件并输入以下内容:
*/5 * * * * /bin/bash cd <path_to_your_app> && rake send_email
*/5 * * * *
表示您每5分钟运行一次。
答案 1 :(得分:0)
寻找名为whenever
它完全符合您的要求。