如何使用 Lambda 和 Amazon SES 发送电子邮件?

上次更新日期:2021 年 9 月 15 日

我想通过 AWS Lambda,使用 Amazon Simple Email Service (Amazon SES) 发送电子邮件。我该如何进行配置?

简短描述

要通过 Lambda 函数使用 Amazon SES 发送电子邮件,请执行以下操作:

1.    为 Lambda 创建 AWS Identity and Access Management (IAM) 策略和执行角色以运行 API 调用。

2.    验证您的 Amazon SES 身份(域或电子邮件地址)。

3.    创建或更新 Lambda 函数(包含通过 Amazon SES 发送电子邮件的逻辑)。

注意:要在电子邮件中包含 PDF 附件,必须使用 Amazon SES SendRawEmail API 操作。有关更多信息,请参阅使用 Amazon SES API 发送原始电子邮件

解决方法

注意:本文中示例 Node.js Lambda 函数代码按原样提供。根据您的使用案例调整示例,或者使用您首选的编程语言设计自己的示例。

为 Lambda 创建 IAM 策略和执行角色以运行 API 调用

1.    使用 JSON 策略编辑器创建 IAM 策略。创建策略时,请将下列 JSON 策略文档粘贴到策略编辑器中:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}

注意:有关如何限制访问此策略的更多信息和示例,请参阅 Amazon SES 的示例 IAM 策略

2.    将 IAM 策略附上 IAM 角色。有关说明,请参阅添加 IAM 身份权限(控制台)中的将托管式策略用作身份(控制台)的权限策略部分。

注意:您将在以下步骤中将此 IAM 角色分配给 Lambda 函数。

验证您的 Amazon SES 身份(域或电子邮件地址)

要验证域,请参阅在 Amazon SES 中验证域

要验证电子邮件地址,请参阅在 Amazon SES 中验证电子邮件地址

创建或更新 Lambda 函数(包含通过 Amazon SES 发送电子邮件的逻辑)

1.    如果您尚未执行以上操作,请创建 Lambda 函数

注意:您可以通过使用 Lambda 控制台或通过构建并上载部署程序包创建 Lambda 函数。

2.    在 Lambda 控制台中,在左侧导航窗格中选择函数

3.    选择函数的名称。

4.    在配置选项卡的权限窗格中,查看函数的执行角色。验证是否列出了您先前创建的具有 Amazon SES 权限的 IAM 角色。如果未列出正确的 IAM 角色,请为函数分配正确的角色。

5.    在编辑器窗格函数代码下,粘贴以下示例函数代码:

重要提示:us-west-2 替换为已验证的 Amazon SES 身份所在的 AWS 区域。将“RecipientEmailAddress”, ... 替换为您的电子邮件要发送到的一个或多个目标电子邮件地址。将 SourceEmailAddress 替换为 Amazon SES 验证后的发件人电子邮件地址,或者任何来自 Amazon SES 验证后域的电子邮件地址。(可选)编辑邮件正文(“测试”)和主题行(“测试电子邮件”)。

// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

var aws = require("aws-sdk");
var ses = new aws.SES({ region: "us-west-2" });
exports.handler = async function (event) {
  var params = {
    Destination: {
      ToAddresses: ["RecipientEmailAddress", ...],
    },
    Message: {
      Body: {
        Text: { Data: "Test" },
      },

      Subject: { Data: "Test Email" },
    },
    Source: "SourceEmailAddress",
  };
 
  return ses.sendEmail(params).promise()
};

有关使用 sendEmail API 的更多信息,请参阅适用于 JavaScript 的 AWS 开发工具包文档

5.    选择 Deploy(部署)。

(可选)发送测试电子邮件

1.    在 Lambda 控制台中,为您的函数配置测试事件

注意:必须具备测试有效载荷,但此代码示例中并未使用。

2.    选择测试。Lambda 会使用 Amazon SES 将测试电子邮件发送给您的收件人。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?