我有一个网站,我想在他们买东西后的几天内向客户发送一些后续电子邮件。我现在想知道该怎么做。我认为有两种选择:
我的问题其实是;在这种情况下,最佳做法是什么?大多数网站如何处理这个以及为什么?
答案 0 :(得分:0)
我会选择方法2.
缺点并非真正的不利。假设你有一个"命令"表,您可以获取要发送的邮件列表,只是查询与您的cron使用的查询非常相似。
但这是个人选择。我不知道通常使用哪种方法。
答案 1 :(得分:0)
我会继续两种选择的组合,这就是我在目前正在开发的系统中实际执行的方法。
准备发送"准备发送"列表对于记录和跟踪您的电子邮件很有用,例如,如果您使用第三方电子邮件解决方案,并且每月的电子邮件数量有限,您可以跟踪您在程序中使用的金额,甚至可能触发自动"升级"如果需要,可以使用该帐户,因为您需要更多电子邮件。
通过为该表设计一个好的模式,可以实现所需的灵活性。
您描述的解决方案将具有类似的架构,我想:
|---------|---------|------|---------|-------|
| send_to | subject | body | send_at | sent |
|---------|---------|------|---------|-------|
这实际上并不灵活,因为一旦插入数据库,为了更改send_at
列,您必须从订单中检索数据,并重新计算send_at
值。
我建议这样的架构:
|---------|---------|------|-----------|---------|-------|
| send_to | subject | body | added_at | send_in | sent |
|---------|---------|------|-----------|---------|-------|
更改是send_at
列现在未修复。运行cron
时,您只会检索与以下查询匹配的电子邮件:
!sent && added_at + send_in >= now
这将返回与使用以下命令查询第一个模式相同的结果:
!sent && send_at >= now
但现在,您可以轻松更改电子邮件添加到队列的时间与实际发送时间之间的等待时间。