在我的一个web应用程序中,我必须向我的用户发送电子邮件(所有邮件都是跨国的,用户接受隐私政策和条款)。
目前,亚马逊允许我每24小时发送10000封电子邮件,我们可以很容易地增加配额。我的问题是,我们每秒只能通过亚马逊发送5封电子邮件。因此,我对PHP脚本(循环)来处理同样的问题感到有点困惑。一个普通的PHP循环可以处理大量的电子邮件吗?
while循环可用时是否有延迟?因此,我们可以限制它每秒2-3封电子邮件。由于该脚本在cron作业中工作
提前感谢
发布于 2013-04-20 05:10:07
这将需要一些代码,但不是很多,但如果您将生成电子邮件的任务与实际执行电子邮件的任务分开,您可以使用amazon SQS和cron作业来完成邮件发送。
我所做的是我有一个称为'EmailQueue‘的SQS队列,它包含邮件中的“收件人”、“主题”和电子邮件正文。生成要发送的电子邮件的作业只需将所有这些消息放入一个队列,并尽可能快地完成。
然后,我有一个计划的任务,它每分钟运行一次,它会进入队列,并根据适当的油门下载一定数量的电子邮件。cron作业根据存储在SQS消息中的信息构建和发送电子邮件消息,并在发送消息时将其删除-它不需要访问其他任何内容,因为发送电子邮件所需的所有内容都封装在SQS消息中。
您可以通过cron作业的时间来控制油门。在我的例子中,我的作业在每次运行时在退出之前最多只能处理5封电子邮件。
使用队列和cron作业还可以消除UI用户可能存在的任何延迟(假设存在延迟),因为将消息加载到队列的速度很快,而SMTP电子邮件发送有时很慢,这可能会导致最终用户出现明显的延迟。
发布于 2018-08-26 14:39:17
亚马逊是以低成本发送大量电子邮件的最佳选择,但它并没有为他们的服务提供最好的gui。您可以使用bullmailer等外部服务从amazon ses发送电子邮件。
它提供列表管理、活动、电子邮件自动化等功能,并为您的活动提供详细报告
https://stackoverflow.com/questions/16098727
复制相似问题