首页 > 解决方案 > 使用 AWS SES 发送批量电子邮件

问题描述

我目前的设置如下:

我有一个要向其发送批量电子邮件的客户列表。在我的软件中,我可以选择立即发送或安排发送时间。我正在使用 Laravel,所以我将电子邮件详细信息与发送时间和日期一起保存在我的数据库中,然后在控制台 kernel.php 中设置一个时间表来检查该表,如果有电子邮件要发送,那么它们将被发送。

首先,我确认他们不需要将其排队到 SQS,因为基本上我的设置基本上是在排队(除非有我不知道的好处)

现在我可以看到有两种选择:

  1. 我遍历学生并单独发送到 SES。
  2. 通过 AWS SDK 中的模板选项发送并一次性发送电子邮件。

使用选项 1,我有 SES 每秒 14 封电子邮件的限制,所以我想出了这个。

$i=0;
foreach($clients as $client) {

  // send email code

  if(($i++ % 10) == 0) {
    sleep(1);
  }
}

我相信这只会每秒发送 10 个。

使用选项 2,我每次通话的电子邮件地址限制为 50 个(我认为这就是限制),因此需要分批发送 50 个,这将相当简单。

所以我的问题是哪个更好,如果我使用选项 1,我的代码是正确的还是有更好的编写方法?

还是我做错了,有更好的方法!!

标签: phpamazon-ses

解决方案


对于其他想要解决此问题的人,解决方案如下:

如果您要发送电子邮件并自己处理任何动态数据,只需使用选项 1 并遍历每个电子邮件地址并发送到 SES API 单独设置每次发送时脚本中的延迟。以下应每秒发送 10 个。

foreach($clients as $client) {

  // send email code

  usleep(100000);

}

如果您想个性化电子邮件正文中的收件人姓名,请使用模板选项并一次发送最多 50 个地址,因为这是每个 API 调用的限制。


推荐阅读