我有3套观众(每个观众70人),谁需要个性化的电子邮件发送给他们在特定的时间。每封电子邮件都需要针对特定的受众进行定制:电子邮件的内容类似于:“Hi First_Name”您在受众A中,您将坐在“X排,Y座”等位置。
受众A需要在周四上午10:00发送电子邮件1,在周五下午2:00发送电子邮件2,在周六下午12:00发送电子邮件3
受众B需要在周五上午10:00发送电子邮件1,在周六下午2:00发送电子邮件2,在周日下午12:00发送电子邮件3
受众C需要在周六上午10:00发送电子邮件1,在周日下午2:00发送电子邮件2,在周一下午12:00发送电子邮件3
什么是正确的“Rails-Way”来自动化和批量发送这些电子邮件?某种自定义的rake任务?或者是ActiveJob?或者我可以在网站上创建一个按钮,这样票房工作人员只需点击网站上的一个按钮,它就会自动发送所有这些电子邮件?
我有一个基于鼠标点击的Rails 5应用程序,它可以使用deliver_now和邮件枪向所有观众发送电子邮件。我正在重构应用程序,以更具体地分离受众,并自动发送电子邮件。我对ActiveJob一无所知,而且我是一个rails noobie。
patrons_controller.rb
def audience_segment_A
Patron.where(audience: A).pluck(:email).batch_send
end
def batch_send
PatronMailer.send(email_1).deliver_now
PatronMailer.send(email_2).deliver_later(wait: 26.hours)
PatronMailer.send(email_3).deliver_later(wait: 22.hours)
end我的代码没有对每个电子邮件进行个性化处理(也不能正常工作),而且我不确定如何调用/启动这个电子邮件发送过程。
发布于 2019-01-27 05:37:43
我将创建一个单独的表/模型来存储所有电子邮件(可能是Invitation)。添加两个新属性: status (pending/sent)和time_to_sent (Datetime)。然后运行rake脚本,该脚本查询表中仍处于挂起状态且需要发送的所有记录:
Invitation.where(status:pending).where('time_to_send < ?', DateTime.now)然后把那些邮件都发出去。发送成功后,相应地更新状态。
这可能比创建工作更可靠一些。我认为Jobs应该用在需要马上发生的事情上,但应该是主线的,和/或不是业务关键的。您希望100%确定电子邮件可能收到并发送。
https://stackoverflow.com/questions/54382240
复制相似问题