使用 Amazon SES 发送电子邮件 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们已宣布即将终止对 Amazon SDK for JavaScript v2 的支持。建议您迁移到 Amazon 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 上的此处找到。