我們已宣布
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon SES 傳送電子郵件
這個 Node.js 程式碼範例會說明:
傳送文字或 HTML 電子郵件。
根據電子郵件範本傳送電子郵件。
根據電子郵件範本傳送大量電子郵件。
Amazon SES API 為您提供兩種不同的傳送電子郵件方式,取決於您希望對電子郵件訊息的合成進行多少控制:格式化和原始。如需詳細資訊,請參閱使用 Amazon SES API 傳送格式化電子郵件和使用 Amazon SES API 傳送原始電子郵件。
使用案例
在此範例中,您會使用一系列的 Node.js 模組,以多種不同方式傳送電子郵件。Node.js 模組使用適用於 JavaScript 的 SDK,以用戶端AWS.SES
類別的這些方法建立和使用電子郵件範本:
先決條件任務
安裝 Node.js。如需安裝 Node.js 的詳細資訊,請參閱 Node.js 網站
。 透過使用者登入資料建立共用組態檔。如需有關提供登入資料 JSON 檔案的詳細資訊,請參閱 從共用登入資料檔案中在 Node.js 中載入登入資料。
電子郵件訊息傳送要求
Amazon SES 會撰寫電子郵件訊息,並立即將訊息排入佇列以供傳送。若要使用 SES.sendEmail
方法傳送電子郵件,您的訊息必須符合下列需求:
您必須從已驗證的電子郵件地址或網域傳送訊息。如果您要使用非驗證的地址或網域來傳送電子郵件,則該操作會導致
"Email address not verified"
錯誤。如果您的帳戶仍在 Amazon SES 沙盒中,您只能傳送至驗證的地址或網域,或傳送至與 Amazon SES 信箱模擬器關聯的電子郵件地址。如需詳細資訊,請參閱《Amazon Simple Email Service 開發人員指南》中的驗證電子郵件地址和網域。
訊息的總大小 (包括附件) 必須小於 10 MB。
該訊息至少必須含有一個收件人電子郵件地址。收件人地址可為 To (收件人):地址、CC (副本):地址或 BCC (密件副本):地址。若收件人電子郵件地址無效 (即不為
UserName@[SubDomain.]Domain.TopLevelDomain
格式),即使該訊息包含其他有效的收件人,則整個訊息都將被拒絕。該訊息的 To: (收件人)、CC: (副本)、和 BCC: (密件副本) 的收件人總和不得多於 50 名。若您需要傳送電子郵件訊息給更多的收件人,則您必須將收件人清單分成 50 人或更少人的群組,然後再多次呼叫
sendEmail
方法以傳送訊息至個別群組。
傳送電子郵件
在此範例中,使用 Node.js 模組以搭配 Amazon SES 傳送電子郵件。以檔名 ses_sendemail.js
建立一個 Node.js 模組。依前述內容設定軟體開發套件。
建立一個物件以傳遞定義欲傳送電子郵件的參數值,包括寄件者和接收者地址、主旨、電子郵件本文 (純文字和 HTML 格式),至 AWS.SES
用戶端類別的 sendEmail
方法。若要呼叫 sendEmail
方法,請建立叫用 Amazon SES 服務物件的 promise 來傳遞參數。然後,在 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 模組。依前述內容設定軟體開發套件。
建立一個物件以傳遞定義欲傳送電子郵件的參數值,包括寄件者和接收者地址、主旨、電子郵件本文 (純文字和 HTML 格式),至 AWS.SES
用戶端類別的 sendTemplatedEmail
方法。若要呼叫 sendTemplatedEmail
方法,請建立叫用 Amazon SES 服務物件的 promise 來傳遞參數。然後,在 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 模組。依前述內容設定軟體開發套件。
建立一個物件以傳遞定義欲傳送電子郵件的參數值,包括寄件者和接收者地址、主旨、電子郵件本文 (純文字和 HTML 格式),至 AWS.SES
用戶端類別的 sendBulkTemplatedEmail
方法。若要呼叫 sendBulkTemplatedEmail
方法,請建立叫用 Amazon SES 服務物件的 promise 來傳遞參數。然後,在 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 上