我没有大型电子邮件基础设施,但是我需要快速群发电子邮件。我如何使用 Amazon Simple Email Service (SES) 和 AWS Lambda 实现?

一直以来,群发邮件所需的硬件开销、软件许可证成本和专业技术通常都成本高昂,无法实施。您可以使用 Amazon Web Services 技术非常快速地群发电子邮件,而仅需构建和维护内部电子邮件基础设施所需投资的一小部分成本。 

将 Amazon SES 和 AWS Lambda 与 Amazon Simple Storage Service (S3) 结合使用,以快速将基于 HTML 或文本的电子邮件发送给大量收件人。本文所述解决方案还可发送 Multipart 或 Alternative 格式的电子邮件。

请注意
如果您发送大量电子邮件到无效电子邮件地址,您的 SES TCP/IP 地址有被标记为垃圾邮件服务器的风险。Internet 服务提供商 (ISP) 会主动将垃圾邮件服务器加入黑名单,如果您的 SES IP 地址进入黑名单,它将无法通过遵照该黑名单进行拦截的 ISP 发送电子邮件。如果要将电子邮件发送给大量可能具有无效电子邮件地址的收件人,不建议使用此解决方案。

此解决方案能从您发布到 S3 存储桶的邮件列表中读取电子邮件地址列表。Lambda 函数能够读取电子邮件地址列表,并将包含在 S3 存储桶中预先编排好格式的 html 或文本电子邮件发送给邮件列表中包含的每个收件人。

执行以下步骤实施此解决方案:

  1. 使用 5 分钟超时设置在 AWS Lambda 上部署 ses_mailer.py。此设置可确保任何脚本都在 Lambda 的 5 分钟脚本超时周期内发生超时。如果脚本超时设置超过 5 分钟,则可能导致意外行为,因为 S3 会异步调用 Lambda。这可能导致无法将电子邮件发送给部分收件人,同时向另一些收件人多次成功投递。
  2. 创建一个 S3 存储桶,将 S3 PUT 存储桶通知事件设置为触发 Lambda 函数。验证与您的 Lambda 函数关联的访问权限策略对 Amazon S3 授予调用 Lambda 函数的权限。有关 Lambda 函数访问 S3 存储桶所需权限的更多信息,请参阅教程:结合使用 AWS Lambda 和 Amazon S3 中的实现摘要部分。
  3. 在 S3 事件配置中,将事件后缀设置为 .gz。
  4. 确保 Lambda 角色有 S3 读/写权限,并且具有对 S3 存储桶的 ses:SendRawEmail 权限。配置适合您的使用情形的 Lambda 环境变量。例如,以下变量对于给定使用案例有效:
    REGION=us-east-1, MAX_THREADS=10, TEXT_MESSAGE_FILE=email_body.txt, HTML_MESSAGE_FILE=email_body.html.
  5. 在文件 html_message.html 中写入 HTML 格式的电子邮件,并将它上传到 S3 存储桶。
  6. 在文件 text_message.txt 中写入纯文本格式的电子邮件,并将它上传到 S3 存储桶。
  7. 以 .CSV 格式创建邮件列表文件,并确保使用以下格式指定收件人信息。不要在文档第一行输入标头字段。

    发件人姓名 <me@example.com>, 收件人姓名 <you@example.com>, 主题
  8. 使用 gzip 压缩文件。例如,命令
    gzip -kf mailing_list_14032016.csv creates mailing_list_14032016.csv.gz
  9. 将 .gzip 压缩文件 mailing_list_14032016.csv.gz 上传到 S3 存储桶以触发 Lambda 函数。
  10. 该函数将开始向 csv 文件中的所有地址发送电子邮件,并在 <FILENAME>_error.log 中记录失败情况。

请注意
如果收件人地址数量超出数万个,可以执行其他一些步骤来提高发送性能:

  • 将电子邮件列表分割为多个较小的 csv 文件。
  • 增大 MAX_THREADS 环境变量的值。此值受您的账户的 SES TPS 限制。

Lambda 用来通过 SES 发送电子邮件的 ses_mailer.py 文件可从 AWS 实验室 Github 存储库下载。

Amazon SES, AWS Lambda, Amazon S3, 群发邮件, 垃圾邮件, 送达率, SPF, Amazon SES 查询 API, 错误日志记录, 并行处理, 统计数据, 通知


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2016 年 12 月 30 日