【问题标题】:Create Drip Email Campaigns Rails创建滴灌电子邮件活动 Rails
【发布时间】:2012-02-16 19:20:33
【问题描述】:

我有一个 Rails 应用程序,我正在尝试为其创建一个滴灌式电子邮件营销活动。基本上我的想象是在有人注册后,我在注册后 2 天给他们发一封特定的电子邮件,在注册后一周再发邮件,在注册后一个月再发邮件。

最好的方法是什么?是否有一个可以让它变得简单的 gem,或者一些做得很好的第三方电子邮件提供商?我已经使用 SendGrid 发送电子邮件并查看他们的 API,但我没有找到任何可以做到这一点的东西。感谢您的帮助!

【问题讨论】:

  • 您有什么理由不考虑使用 cron 作业?
  • delayed_job 很适合这个。以某种方式保存电子邮件,然后创建一个作业以在给定时间发送电子邮件。
  • 我认为这应该会有所帮助:stackoverflow.com/questions/2655654/…

标签: ruby-on-rails email


【解决方案1】:

我在 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

我使用的另一个很酷的技巧是将电子邮件存储在数据库中。我用subject, body, and drip_stage 制作了一个名为Email 的模型。然后我实际上内联渲染电子邮件,以便我可以访问变量。

请注意,这是非常不安全的,因为正在评估数据库代码。您永远不应该让您的电子邮件创建界面向公众开放

呈现电子邮件所需要做的就是

= render :inline => @email.body, :type => :haml

【讨论】:

  • 为了让用户查询更具可读性,User.where.not(last_emailed_at: nil)
【解决方案2】:

延迟工作可能是您最好的选择:
https://github.com/collectiveidea/delayed_job

如果您由于某种原因无法运行单独的工作进程,请查看 Faucet:
https://github.com/dshipper/Faucet

我强烈建议使用第三方 SMTP 提供商发送邮件,而不是通过 Postfix,否则您可能会遇到传递问题,因为大多数免费电子邮件提供商(Gmail、Yahoo Mail、Hotmail)都进行过滤。

我认为最好的选择是MailgunMandrill

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 2014-02-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多