使用AWS SES发送批量电子邮件

时间:2018-08-23 11:41:53

标签: php amazon-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,则我的代码正确还是有更好的书写方式?

或者我做错了什么,还有更好的方法!

1 个答案:

答案 0 :(得分:0)

对于任何想要对此答案的人,解决方案如下:

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

foreach($clients as $client) {

  // send email code

  usleep(100000);

}

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