在我的一个网络应用程序中,我必须发送电子邮件给我的用户(所有邮件都是跨国的,用户接受隐私政策和条款)。目前亚马逊让我每24小时发送10000封邮件,我们可以很容易地增加配额。我的问题是,我们只能通过亚马逊每秒发送5封邮件。所以我有点困惑与PHP脚本(循环)来处理相同的。一个正常的PHP循环可以处理这种批量邮件?while循环是否存在延迟?这样我们可以将其限制为每秒2-3封电子邮件。由于脚本在cron作业中工作先谢了
utugiqy61#
这将需要一点代码,但不多,但如果您将生成电子邮件的任务与实际发送电子邮件的任务分开,您可以使用amazon SQS和cron作业来发送电子邮件。我所做的是我有一个名为'EmailQueue'的SQS队列,它包含邮件中的“TO”,“Subject”和邮件正文。生成要发送的邮件的作业只是将所有这些邮件放入一个队列中,尽可能快。然后,我有一个计划任务,它每分钟运行一次,进入队列并下载一定数量的电子邮件,根据适当的节流阀发送出去。cron作业根据存储在SQS消息中的信息构建和发送电子邮件消息,并在发送时删除消息-它不需要访问任何其他内容,因为发送电子邮件所需的一切都封装在SQS消息中。您可以通过cron作业的时间来控制节流阀。在我的情况下,我的作业在退出之前每次运行最多只会处理5封电子邮件。使用队列和cron作业还可以消除UI用户可能存在的任何延迟(假设存在),因为将消息加载到队列中的速度很快,而SMTP电子邮件发送有时很慢,这可能会给最终用户带来明显的延迟。
sbdsn5lh2#
亚马逊ses是低成本发送批量邮件的最佳选择,但它没有为他们的服务提供最好的图形用户界面.你可以使用bullmailer这样的外部服务从亚马逊ses发送邮件.它提供了列表管理,活动,电子邮件自动化manay更多的详细报告,为您的活动
2条答案
按热度按时间utugiqy61#
这将需要一点代码,但不多,但如果您将生成电子邮件的任务与实际发送电子邮件的任务分开,您可以使用amazon SQS和cron作业来发送电子邮件。
我所做的是我有一个名为'EmailQueue'的SQS队列,它包含邮件中的“TO”,“Subject”和邮件正文。生成要发送的邮件的作业只是将所有这些邮件放入一个队列中,尽可能快。
然后,我有一个计划任务,它每分钟运行一次,进入队列并下载一定数量的电子邮件,根据适当的节流阀发送出去。cron作业根据存储在SQS消息中的信息构建和发送电子邮件消息,并在发送时删除消息-它不需要访问任何其他内容,因为发送电子邮件所需的一切都封装在SQS消息中。
您可以通过cron作业的时间来控制节流阀。在我的情况下,我的作业在退出之前每次运行最多只会处理5封电子邮件。
使用队列和cron作业还可以消除UI用户可能存在的任何延迟(假设存在),因为将消息加载到队列中的速度很快,而SMTP电子邮件发送有时很慢,这可能会给最终用户带来明显的延迟。
sbdsn5lh2#
亚马逊ses是低成本发送批量邮件的最佳选择,但它没有为他们的服务提供最好的图形用户界面.你可以使用bullmailer这样的外部服务从亚马逊ses发送邮件.
它提供了列表管理,活动,电子邮件自动化manay更多的详细报告,为您的活动