创建滴灌电子邮件活动Rails

时间:2012-02-16 19:20:33

标签: ruby-on-rails email email-integration

我有一个Rails应用程序,我正在尝试为其创建一个滴水电子邮件广告系列。基本上我想象的是,在有人注册后,我会在注册后2天向他们发送一封特定的电子邮件,在注册后一周发送另一封电子邮件,并在注册后一个月发送另一封电子邮件。

最好的方法是什么?有没有让它变得简单的宝石,或者某些第三方电子邮件提供商做得好吗?我已经使用SendGrid发送电子邮件并查看他们的API我没有发现任何确实如此。谢谢你的帮助!

2 个答案:

答案 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)都会进行过滤。

我认为最好的选择是MailgunMandrill