【问题标题】:Email batches via AWS SES, ideas?通过 AWS SES 批量发送电子邮件,想法?
【发布时间】:2018-07-18 13:33:41
【问题描述】:

我有一个 SaaS 应用程序,其中每个付费客户可能有成千上万的成员,他们可能希望不时向其发送电子邮件。

目前,通过 AWS SES 发送简单的密件抄送已经成功,但现在我正在考虑发送个性化电子邮件,所以我必须能够一封一封地发送电子邮件。

据我所知,SES 没有任何队列系统,您必须对每封电子邮件进行 API 调用。简而言之,发送批处理需要很长时间(我的限制是每秒 14 个),并且用户无法在页面执行时关闭页面(即使 AJAX 调用在您离开页面时也会停止执行,对吗?)。

我正在考虑构建一个系统,将电子邮件存储在数据库表中,然后:

1) 使用每 5 秒左右执行一次的 CRON,抓取几封电子邮件并发送。

2) 每 5 秒执行一次 AJAX 脚本,该脚本仅批量抓取所述已登录客户的电子邮件并将其发送出去,但同样,如果客户在执行时注销,则可能会中断特定批次(其余的仍会在客户下次登录时继续发送)。

有没有更好的想法?或者,以上两者中的哪一个更受欢迎?

【问题讨论】:

    标签: ajax amazon-web-services email cron amazon-ses


    【解决方案1】:

    您应该使用 AWS 几个月前推出的模板和 SendBulkTemplatedEmail 端点:https://aws.amazon.com/blogs/ses/introducing-email-templates-and-bulk-sending/

    这样,您可以通过一次 SES API 调用发送多达 50 封个性化电子邮件。所以 700 有 14 个电话。

    您不应该考虑在用户的浏览器中将它们排队并通过发出一系列 AJAX 请求来发送它们。您应该只发送一个 Ajax 请求来开始工作。在大多数服务器端语言(我能想到的任何语言)中,您都可以响应 HTTP 请求并在响应后继续进行处理。您还可以通过多种方式实现进度检查器。

    【讨论】:

    • 但是,如果我使用 AJAX 调用页面,如果访问者离开页面,它不会停止执行吗?还是在完成之前仍会执行?
    • @RobertBenedetto 这取决于您的服务器端语言和代码。根据您的假设,我认为您正在使用 PHP,在这种情况下,您可以通过单个 Ajax 调用来实现它的一种方式如下所示:1)读取用户输入 2)启动一个单独的过程来发送电子邮件 3)以状态(是否成功启动)响应 Ajax 调用。
    • 这种方法的一个缺点是,您失去了应用程序的可移植性。这意味着,如果不更改代码,您将无法插入不同的电子邮件服务。如果您担心应用程序的可移植性,我建议您使用基于玉米的方法。
    • @PaulPro 我正在使用 C# (.Net),所以我猜线程调用可能是诀窍?
    • 实际上,我想我可以在没有 AJAX 的情况下通过在另一个线程上运行它来完成整个事情?即使用户导航到另一个页面,线程仍然会执行吗?
    【解决方案2】:

    使用发送到 SES SMTP 服务器的 cronjob。通过这种方式,您可以个性化电子邮件并控制要发送的电子邮件数量。您的 cronjob 可以在每批电子邮件之间休眠。

    【讨论】:

      【解决方案3】:

      您可以使用 celery 来运行后台作业。用户在网页上提交请求,该网页通过 celery 启动后台作业。后台工作负责发送电子邮件。发送电子邮件完成后,通过电子邮件通知用户。

      http://www.celeryproject.org/

      【讨论】:

      • 芹菜?有链接之类的吗?那是什么?
      猜你喜欢
      • 2018-06-24
      • 2020-11-25
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 2020-06-11
      • 1970-01-01
      相关资源
      最近更新 更多