1

在我的一个网络应用程序中,我必须向我的用户发送电子邮件(所有邮件都是跨国的,用户接受隐私政策和条款和条件)。

目前亚马逊盛大我每 24 小时发送 10000 封电子邮件,我们可以轻松增加配额。我的问题是我们每秒只能通过亚马逊发送 5 封电子邮件。所以我对处理相同的 PHP 脚本(循环)有点困惑。一个普通的 PHP 循环可以处理大量电子邮件吗?

while 循环是否有任何延迟可用?这样我们就可以将其限制为每秒 2-3 封电子邮件。由于脚本在 cron 作业中工作

提前致谢

4

2 回答 2

3

这将需要一点代码,但并不多,但是如果您将生成电子邮件的任务与实际发送电子邮件的任务分开,您可以使用 amazon SQS 和 cron 作业来发送邮件。

我所做的是我有一个名为“EmailQueue”的 SQS 队列,其中包含消息中电子邮件的“收件人”、“主题”和正文。生成要发送的电子邮件的作业只是将所有这些消息放入队列中,尽可能快地/想要。

然后,我有一个计划任务,该任务每分钟运行一次,该任务进入队列并下载一定数量的电子邮件以发送出去,具体取决于到位的节流阀。cron 作业根据存储在 SQS 消息中的信息构建和发送电子邮件消息,并在发送消息时删除它们 - 它不需要访问任何其他内容,因为发送电子邮件所需的一切都封装在 SQS 中信息。

您可以通过 cron 作业的时间来控制油门。就我而言,我的工作每次运行最多只能处理 5 封电子邮件,然后才会退出。

使用队列和 cron 作业还可以消除 UI 用户可能存在的任何延迟(假设存在延迟),因为将消息加载到队列中速度很快,而 SMTP 电子邮件有时很慢,这可能会导致明显的延迟最终用户。

于 2013-04-19T21:10:06.790 回答
1

亚马逊提供了以低成本发送批量电子邮件的最佳选择,但它并没有为他们的服务提供最佳 gui。您可以使用Bullmailer等外部服务从 amazon ses 发送电子邮件。

它提供列表管理、活动、电子邮件自动化等更多功能,并为您的活动提供详细报告

于 2018-08-26T06:39:17.317 回答