在 rails 中构建电子邮件警报服务的最佳方法是什么?



我希望建立一个功能,当某些内容发布在我们的网站上时,人们可以通过电子邮件收到通知。 用户将提供他们的电子邮件地址,选择他们感兴趣的几个主题领域以及他们想要更新的频率(每天或每周)。

构建此类系统的最佳实践是什么?

我想我会从某种具有以下字段的订阅表(postgres)开始:

  • 电子邮件
  • subject_areas(ID列表?
  • 频率(每天/每周)
  • last_emailed(时间戳)

我可以构建一个每天晚上针对此表运行的工作,该表将点击每一行并聚合与他们感兴趣的subject_areas匹配的所有内容,生成电子邮件并将其放入 Mandrill 或 Amazon 等第三方电子邮件服务中。

这似乎是一个好方法还是有更好的方法来解决这个问题?

这些表可能是:

  • 用户(电子邮件、姓名)
  • 科目
  • 订阅(user_id、subject_id、last_emailed、频率)

您想要的另一部分是后台作业队列系统(delayed_job、sidekiq 或 resque),您将在其中放置作业。 工作进程将处理作业并将其发送到另一个进程中。

Cron 和 BG 作业齐头并进

Cron(或调度程序)。

  1. 查找已订阅的所有用户。
  2. 对于每个用户 - 确定是否有新内容要发送给他们
  3. 为要接收新内容的用户加载作业

后台辅助角色

  1. 对于每个user_subscriber_job - 构建基于电子邮件内容以及用户信息和订阅的内容
  2. 发送电子邮件

相关内容

最新更新