我有一个Rails应用程序,我正在尝试为其创建一个滴水电子邮件广告系列。基本上我想象的是,在有人注册后,我会在注册后2天向他们发送一封特定的电子邮件,在注册后一周发送另一封电子邮件,并在注册后一个月发送另一封电子邮件。
最好的方法是什么?有没有让它变得简单的宝石,或者某些第三方电子邮件提供商做得好吗?我已经使用SendGrid发送电子邮件并查看他们的API我没有发现任何确实如此。谢谢你的帮助!
答案 0 :(得分:2)
我在rails中运行滴灌电子邮件广告系列的设置是存储每个用户drip_stage
以及他们last_emailed_at
的时间。然后我使用heroku调度程序每十分钟安排一次rake任务。 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
通过这种方式,它可以均匀地分发所有用户的电子邮件,而不是一次性分发。
了解有关heroku调度程序的更多信息
https://devcenter.heroku.com/articles/scheduler
我使用的另一个很酷的提示是将电子邮件存储在数据库中。我制作了一个名为Email
的模型subject, body, and drip_stage
。然后我实际上将电子邮件内联呈现,以便我可以访问变量。
请注意,这是非常不安全的,因为正在评估数据库代码。您绝不应该让您的电子邮件创建界面对公众开放
要渲染电子邮件,您需要做的就是
= render :inline => @email.body, :type => :haml
答案 1 :(得分:0)
延迟工作可能是你最好的选择:
https://github.com/collectiveidea/delayed_job
如果由于某种原因无法运行单独的工作流程,请查看水龙头:
https://github.com/dshipper/Faucet
我强烈建议使用第三方SMTP提供商发送而不是通过Postfix,否则您可能会遇到传送问题,因为大多数免费电子邮件提供商(Gmail,Yahoo Mail,Hotmail)都会进行过滤。