使用 Amazon SES 发送电子邮件 - AWS SDK for JavaScript

帮助我们改进AWS SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:AWS SDK for JavaScriptV3 API 参考指南详细描述了所有的 API 操作AWS SDK for JavaScript版本 3 (V3)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon SES 发送电子邮件

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 发送文本或 HTML 电子邮件。

  • 根据电子邮件模板发送电子邮件。

  • 根据电子邮件模板批量发送电子邮件。

Amazon SES API 为您提供了两种不同的方法来发送电子邮件,具体取决于您对电子邮件内容的控制程度:格式化和原始。有关详细信息,请参阅。使用 Amazon SES API 发送格式化的电子邮件使用 Amazon SES API 发送原始电子邮件.

场景

在本示例中,您使用一系列 Node.js 模块以多种方式发送电子邮件。Node.js 模块使用 JavaScript 开发工具包来创建和使用电子邮件模板。SES客户端类:

前提任务

要设置和运行此示例,您必须先完成以下任务:

  • 设置项目环境以运行这些 Node TypeScript 示例,然后安装所需的AWS SDK for JavaScript和第三方模块。按照上的说明操作GitHub.

重要

这些示例演示了如何使用 ECMASCRIPT6 (ES6) 导入/导出客户端服务对象和命令。

电子邮件发送要求

Amazon SES 编写电子邮件并立即将其加入队列等待发送。要使用 SendEmailCommand 方法发送电子邮件,您的邮件必须满足以下要求:

  • 您必须从已验证的电子邮件地址或域发送邮件。如果您尝试使用未验证的地址或域发送电子邮件,则操作会导致 "Email address not verified" 错误。

  • 如果您的账户仍在 Amazon SES 沙盒中,则只能发送到经验证的地址或域,或者与 Amazon SES 邮箱模拟器关联的电子邮件地址。有关更多信息,请参阅 。验证电子邮件地址和域名在《Amazon Simple Email Service 开发人员指南》中。

  • 邮件(包括附件)的总大小必须小于 10 MB。

  • 邮件必须包含至少一个收件人电子邮件地址。收件人地址可以是“收件人:”地址、“抄送:”地址或“密件抄送:”地址。如果某个收件人的电子邮件地址无效(即,未使用格式)UserName@[SubDomain.]Domain.TopLevelDomain),则将拒绝整个邮件,即使邮件包含的其他收件人有效。

  • 邮件在 “收件人:”、“抄送:” 和 “密件抄送:” 字段中包含的收件人不能超过 50 个。如果您需要将电子邮件发送给更多的受众,可以将收件人列表划分为不超过 50 个人的组,然后多次调用 sendEmail 方法来发送邮件到各个组。

发送电子邮件

在本示例中,使用 Node.js 模块通过 Amazon SES 发送电子邮件。

创建libs目录,并创建文件名为的 Node.js 模块sesClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SES 客户端对象。Replace领域和您的AWS区域。

import { SESClient } from "@aws-sdk/client-ses"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SES service object. const sesClient = new SESClient({ region: REGION }); export { sesClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 ses_sendemail.js 的 Node.js 模块。如前所示配置 SDK,包括安装所需的客户端和软件包。

创建一个对象以将定义要发送的电子邮件的参数值传递到SendEmailCommand的方法SES客户端类。调用SendEmailCommand方法中,调用 Amazon SES 服务对象并传递参数。

注意

此示例导入并使用必需的AWS服务 V3 包客户端、V3 命令,并使用send方法采用异步/等待模式。您可以使用 V2 命令创建此示例,而是通过进行一些小的更改。有关详细信息,请参阅 使用 V3 命令

注意

Replace接收器 _ 地址使用将电子邮件发送到的地址,以及SENDER_地址用于从中发送电子邮件的电子邮件地址。

// Create the promise and SES service object // Import required AWS SDK clients and commands for Node.js import { SendEmailCommand } from "@aws-sdk/client-ses"; import { sesClient } from "./libs/sesClient.js"; // Set the parameters const params = { Destination: { /* required */ CcAddresses: [ /* more items */ ], ToAddresses: [ "RECEIVER_ADDRESS", //RECEIVER_ADDRESS /* more To-email addresses */ ], }, Message: { /* required */ Body: { /* required */ Html: { Charset: "UTF-8", Data: "HTML_FORMAT_BODY", }, Text: { Charset: "UTF-8", Data: "TEXT_FORMAT_BODY", }, }, Subject: { Charset: "UTF-8", Data: "EMAIL_SUBJECT", }, }, Source: "SENDER_ADDRESS", // SENDER_ADDRESS ReplyToAddresses: [ /* more items */ ], }; const run = async () => { try { const data = await sesClient.send(new SendEmailCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符处输入以下内容。Amazon SES 将排队,等待发送电子邮件。

node ses_sendemail.js

可以找到这个示例代码在 GitHub 上找到这里.

使用模板发送电子邮件

在本示例中,使用 Node.js 模块通过 Amazon SES 发送电子邮件。创建文件名为 ses_sendtemplatedemail.js 的 Node.js 模块。如前所示配置 SDK,包括安装所需的客户端和软件包。

创建一个对象以将定义要发送的电子邮件的参数值传递到 SES 客户端类的 SendTemplatedEmailCommand 方法,这些参数值包括发件人和收件人地址、主题、纯文本和 HTML 格式的电子邮件正文。调用SendTemplatedEmailCommand方法中,调用 Amazon SES 客户端服务对象并传递参数。

注意

此示例导入并使用必需的AWS服务 V3 包客户端、V3 命令,并使用send方法采用异步/等待模式。您可以使用 V2 命令创建此示例,而是通过进行一些小的更改。有关详细信息,请参阅 使用 V3 命令

注意

Replace领域和您的AWS地区,接收器 _ 地址使用将电子邮件发送到的地址,SENDER_地址用于发送电子邮件的电子邮件地址,并且TEMPLATE_NAME使用模板的名称。

// Import required AWS SDK clients and commands for Node.js import { SendTemplatedEmailCommand } from "@aws-sdk/client-ses"; import { sesClient } from "./libs/sesClient.js"; // Set the parameters const params = { Destination: { /* required */ CcAddresses: [ /* more CC email addresses */ ], ToAddresses: [ "RECEIVER_ADDRESS", // RECEIVER_ADDRESS /* more To-email addresses */ ], }, Source: "SENDER_ADDRESS", //SENDER_ADDRESS Template: "TEMPLATE_NAME", // TEMPLATE_NAME TemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }' /* required */, ReplyToAddresses: [], }; const run = async () => { try { const data = await sesClient.send(new SendTemplatedEmailCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符处输入以下内容。Amazon SES 会排队,等待发送电子邮件。

node ses_sendtemplatedemail.js

可以找到这个示例代码GitHub 上的.

使用模板发送批量电子邮件

在本示例中,使用 Node.js 模块通过 Amazon SES 发送电子邮件。

创建libs目录,并创建文件名为的 Node.js 模块sesClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SES 客户端对象。Replace领域和您的AWS区域。

import { SESClient } from "@aws-sdk/client-ses"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SES service object. const sesClient = new SESClient({ region: REGION }); export { sesClient };

可以找到这个示例代码GitHub 上的.

创建文件名为 ses_sendbulktemplatedemail.js 的 Node.js 模块。如前所示配置 SDK,包括安装所需的客户端和软件包。

创建一个对象以将定义要发送的电子邮件的参数值传递到SendBulkTemplatedEmailCommand的方法SES客户端类。调用SendBulkTemplatedEmailCommand方法中,调用 Amazon SES 服务对象并传递参数。

注意

此示例导入并使用必需的AWS服务 V3 包客户端、V3 命令,并使用send方法采用异步/等待模式。您可以使用 V2 命令创建此示例,而是通过进行一些小的更改。有关详细信息,请参阅 使用 V3 命令

注意

Replace接收器 _ 地址使用将电子邮件发送到的地址,以及SENDER_地址用于从中发送电子邮件的电子邮件地址。

// Import required AWS SDK clients and commands for Node.js import { SendBulkTemplatedEmailCommand } from "@aws-sdk/client-ses"; import { sesClient } from "./libs/sesClient.js"; // Set the parameters var params = { Destinations: [ /* required */ { Destination: { /* required */ CcAddresses: [ "RECEIVER_ADDRESSES", //RECEIVER_ADDRESS /* more items */ ], ToAddresses: [ /* more items */ ], }, ReplacementTemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }', }, ], Source: "SENDER_ADDRESS", // SENDER_ADDRESS Template: "TEMPLATE", //TEMPLATE DefaultTemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }', ReplyToAddresses: [], }; const run = async () => { try { const data = await sesClient.send(new SendBulkTemplatedEmailCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();

要运行示例,请在命令提示符处输入以下内容。Amazon SES 会排队,等待发送电子邮件。

node ses_sendbulktemplatedemail.js

可以找到这个示例代码GitHub 上的.