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

我们已宣布即将终止对 AWS SDK for JavaScript v2 的支持。建议您迁移到 AWS SDK for JavaScript 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 模块使用 SDK for JavaScript,通过 AWS.SES 客户端类的以下方法来创建和使用电子邮件模板:

先决条件任务

电子邮件发送要求

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

  • 您必须从已验证的电子邮件地址或域发送邮件。如果您尝试使用未验证的地址或域发送电子邮件,则操作会导致 "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 发送电子邮件。创建文件名为 ses_sendemail.js 的 Node.js 模块。按前面所示配置 SDK。

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

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create sendEmail params var params = { Destination: { /* required */ CcAddresses: [ "EMAIL_ADDRESS", /* more items */ ], ToAddresses: [ "EMAIL_ADDRESS", /* more items */ ], }, 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: "Test email", }, }, Source: "SENDER_EMAIL_ADDRESS" /* required */, ReplyToAddresses: [ "EMAIL_ADDRESS", /* more items */ ], }; // Create the promise and SES service object var sendPromise = new AWS.SES({ apiVersion: "2010-12-01" }) .sendEmail(params) .promise(); // Handle promise's fulfilled/rejected states sendPromise .then(function (data) { console.log(data.MessageId); }) .catch(function (err) { console.error(err, err.stack); });

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

node ses_sendemail.js

此示例代码可在 GitHub 上的此处找到。

使用模板发送电子邮件

在本示例中,使用 Node.js 模块通过 Amazon SES 发送电子邮件。创建文件名为 ses_sendtemplatedemail.js 的 Node.js 模块。按前面所示配置 SDK。

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

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create sendTemplatedEmail params var params = { Destination: { /* required */ CcAddresses: [ "EMAIL_ADDRESS", /* more CC email addresses */ ], ToAddresses: [ "EMAIL_ADDRESS", /* more To email addresses */ ], }, Source: "EMAIL_ADDRESS" /* required */, Template: "TEMPLATE_NAME" /* required */, TemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }' /* required */, ReplyToAddresses: ["EMAIL_ADDRESS"], }; // Create the promise and SES service object var sendPromise = new AWS.SES({ apiVersion: "2010-12-01" }) .sendTemplatedEmail(params) .promise(); // Handle promise's fulfilled/rejected states sendPromise .then(function (data) { console.log(data); }) .catch(function (err) { console.error(err, err.stack); });

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

node ses_sendtemplatedemail.js

此示例代码可在 GitHub 上的此处找到。

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

在本示例中,使用 Node.js 模块通过 Amazon SES 发送电子邮件。创建文件名为 ses_sendbulktemplatedemail.js 的 Node.js 模块。按前面所示配置 SDK。

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

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create sendBulkTemplatedEmail params var params = { Destinations: [ /* required */ { Destination: { /* required */ CcAddresses: [ "EMAIL_ADDRESS", /* more items */ ], ToAddresses: [ "EMAIL_ADDRESS", "EMAIL_ADDRESS", /* more items */ ], }, ReplacementTemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }', }, ], Source: "EMAIL_ADDRESS" /* required */, Template: "TEMPLATE_NAME" /* required */, DefaultTemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }', ReplyToAddresses: ["EMAIL_ADDRESS"], }; // Create the promise and SES service object var sendPromise = new AWS.SES({ apiVersion: "2010-12-01" }) .sendBulkTemplatedEmail(params) .promise(); // Handle promise's fulfilled/rejected states sendPromise .then(function (data) { console.log(data); }) .catch(function (err) { console.log(err, err.stack); });

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

node ses_sendbulktemplatedemail.js

此示例代码可在 GitHub 上的此处找到。