如何使用 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 将测试电子邮件发送给您的收件人。