Моя установка для запуска кампании капельной электронной почты в рельсах - хранить drip_stage
каждого пользователя и когда он был last_emailed_at
.А затем я планирую грабли на каждые десять минут, используя планировщик heroku.Задача rake выглядит примерно так:
task :send_drip_email => :environment do
users = User.where(:last_emailed_at => Time.at(0)..Time.now)
users.find_each do |u|
UserMailer.send_drip(u, :stage => u.drip_stage)
u.update_attributes(:last_emailed_at => Time.now, :drip_stage => u.drip_stage + 1)
end
end
Таким образом, она равномерно распределяет электронные письма всех ваших пользователей, а не все сразу.*
Еще один крутой совет, который я использую, - хранить электронную почту в базе данных.Я сделал модель под названием Email
с subject, body, and drip_stage
.А потом я на самом деле отрисовываю электронную почту, чтобы получить доступ к переменным.
Обратите внимание, что это крайне небезопасно, поскольку код базы данных подвергается оценке.Вы никогда не должны позволять вашему интерфейсу создания электронной почты быть открытым для общественности
Все, что вам нужно сделать, чтобы сделать электронное письмо, это
= render :inline => @email.body, :type => :haml