通过 AWS SES 发送电子邮件批次,想法?
Email batches via AWS SES, ideas?
我有一个 SaaS 应用程序,其中每个付费客户可能有成千上万的成员,他们可能希望时不时地向其发送电子邮件。
目前,通过 AWS SES 发送简单的密件抄送已经成功了,但现在我正在考虑发送个性化电子邮件,所以我必须能够一封接一封地发送电子邮件。
据我所知,SES 没有任何队列系统,您必须对每封电子邮件进行 API 调用。简而言之,发送一个批处理需要很长时间(我的限制是每秒 14 个),并且用户不能在执行时关闭页面(即使 AJAX 调用在你离开页面时也会停止执行,我说的对吗? ).
我正在考虑构建一个系统,将电子邮件存储在数据库中 table 然后:
1) 使用每 5 秒左右执行一次的 CRON,抓取几封电子邮件并发送。
2) 每 5 秒执行一次 AJAX 脚本,仅批量抓取所述已登录客户的电子邮件并将其发送出去,但同样,如果客户在执行过程中注销,则可能是具体一批被打断了(剩下的一批在客户下次登录时仍会继续发送)。
大家有什么更好的主意吗?或者,以上两者中哪一个是首选?
使用发送到 SES SMTP 服务器的 cronjob。通过这种方式,您可以个性化电子邮件并控制要发送的电子邮件数量。您的 cronjob 可以在每批电子邮件之间休眠。
您应该使用 AWS 几个月前推出的模板和 SendBulkTemplatedEmail 端点:https://aws.amazon.com/blogs/ses/introducing-email-templates-and-bulk-sending/。
这样,您可以通过一次 SES API 调用发送最多 50 封个性化电子邮件。所以 700 有 14 个调用。
您不应该考虑在用户的浏览器中将它们排队并通过发出一系列 AJAX 请求来发送它们。您应该只发送一个 Ajax 请求来开始一项工作。在大多数服务器端语言(我能想到的任何语言)中,您可以响应 HTTP 请求并在响应后继续进行处理。您还可以通过多种方式实现进度检查器。
您可以将 celery 用于 运行 后台作业。用户在网页上提交请求,该网页通过 celery 启动后台作业。后台作业负责发送电子邮件。发送邮件完成后,通过邮件通知用户。
我有一个 SaaS 应用程序,其中每个付费客户可能有成千上万的成员,他们可能希望时不时地向其发送电子邮件。
目前,通过 AWS SES 发送简单的密件抄送已经成功了,但现在我正在考虑发送个性化电子邮件,所以我必须能够一封接一封地发送电子邮件。
据我所知,SES 没有任何队列系统,您必须对每封电子邮件进行 API 调用。简而言之,发送一个批处理需要很长时间(我的限制是每秒 14 个),并且用户不能在执行时关闭页面(即使 AJAX 调用在你离开页面时也会停止执行,我说的对吗? ).
我正在考虑构建一个系统,将电子邮件存储在数据库中 table 然后:
1) 使用每 5 秒左右执行一次的 CRON,抓取几封电子邮件并发送。
2) 每 5 秒执行一次 AJAX 脚本,仅批量抓取所述已登录客户的电子邮件并将其发送出去,但同样,如果客户在执行过程中注销,则可能是具体一批被打断了(剩下的一批在客户下次登录时仍会继续发送)。
大家有什么更好的主意吗?或者,以上两者中哪一个是首选?
使用发送到 SES SMTP 服务器的 cronjob。通过这种方式,您可以个性化电子邮件并控制要发送的电子邮件数量。您的 cronjob 可以在每批电子邮件之间休眠。
您应该使用 AWS 几个月前推出的模板和 SendBulkTemplatedEmail 端点:https://aws.amazon.com/blogs/ses/introducing-email-templates-and-bulk-sending/。
这样,您可以通过一次 SES API 调用发送最多 50 封个性化电子邮件。所以 700 有 14 个调用。
您不应该考虑在用户的浏览器中将它们排队并通过发出一系列 AJAX 请求来发送它们。您应该只发送一个 Ajax 请求来开始一项工作。在大多数服务器端语言(我能想到的任何语言)中,您可以响应 HTTP 请求并在响应后继续进行处理。您还可以通过多种方式实现进度检查器。
您可以将 celery 用于 运行 后台作业。用户在网页上提交请求,该网页通过 celery 启动后台作业。后台作业负责发送电子邮件。发送邮件完成后,通过邮件通知用户。