Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 创建滴水式电子邮件活动_Ruby On Rails_Email - Fatal编程技术网

Ruby on rails 创建滴水式电子邮件活动

Ruby on rails 创建滴水式电子邮件活动,ruby-on-rails,email,Ruby On Rails,Email,我有一个Rails应用程序,我正试图为它创建一个滴滴电子邮件活动。基本上,我想象的是,在某人注册后,我会在注册后两天、注册后一周和注册后一个月向他们发送一封特定的电子邮件 最好的方法是什么?是否有一个gem可以让它变得简单,或者有某个第三方电子邮件提供商做得很好?我已经使用SendGrid发送电子邮件,并且通过他们的API查看,我没有发现任何能做到这一点的东西。谢谢你的帮助 延迟的工作可能是你最好的选择: 如果由于某种原因无法运行单独的辅助进程,请查看水龙头: 我强烈建议使用第三方SMTP提

我有一个Rails应用程序,我正试图为它创建一个滴滴电子邮件活动。基本上,我想象的是,在某人注册后,我会在注册后两天、注册后一周和注册后一个月向他们发送一封特定的电子邮件


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

延迟的工作可能是你最好的选择:

如果由于某种原因无法运行单独的辅助进程,请查看水龙头:

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


我认为最好的选择是或。

我在rails中运行滴水电子邮件活动的设置是存储每个用户的
滴水阶段
,以及他们上次在
发送电子邮件的时间。然后我使用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调度程序的更多信息

我使用的另一个很酷的技巧是在数据库中存储电子邮件。我制作了一个名为
Email
的模型,带有
主题、主体和滴水台。然后我把邮件内联,这样我就可以访问变量了

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

所有你要做的是呈现电子邮件

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

有什么理由不考虑使用cron作业吗?delayed_作业可以很好地解决这个问题。以某种方式保存电子邮件,然后创建一个作业在给定时间发送电子邮件。我认为这应该会有帮助:为了让用户查询更具可读性,
user.where.not(上次发送电子邮件地址:nil)