Amazon を使用した E メールの送信 SES - AWS SDK for JavaScript

AWS SDK for JavaScript V3 APIリファレンスガイドでは、バージョン 3 (V3) のすべてのAPIオペレーションについて詳しく説明しています AWS SDK for JavaScript 。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon を使用した E メールの送信 SES

JavaScript code example that applies to Node.js execution

この Node.js コード例は以下を示しています。

  • テキストまたは HTML E メールを送信します。

  • E メールテンプレートに基づいて E メールを送信します。

  • E メールテンプレートに基づいて一括 E メールを送信します。

Amazon SESAPIでは、E メールメッセージの構成に対する制御の程度に応じて、フォーマット済みと未加工の 2 つの異なる方法で E メールを送信できます。詳細については、「Amazon を使用してフォーマットされた E メールを送信するSESAPI」および「Amazon を使用して raw E SES メールを送信するAPI」を参照してください。

シナリオ

この例では、一連の Node.js モジュールを使用してさまざまな方法で E メールを送信します。Node.js モジュールは、 SDKの を使用して JavaScript 、SESクライアントクラスの次のメソッドを使用して E メールテンプレートを作成および使用します。

前提条件タスク

この例をセットアップして実行するには、まず次のタスクを完了する必要があります。

  • これらのノード TypeScript 例を実行するようにプロジェクト環境を設定し、必要な AWS SDK for JavaScript モジュールとサードパーティモジュールをインストールします。「」の指示に従ってください GitHub

重要

これらの例は、 ECMAScript6 () を使用してクライアントサービスオブジェクトとコマンドをインポート/エクスポートする方法を示していますES6。

  • これには Node.js バージョン 13.x 以降が必要です。Node.js の最新バージョンをダウンロードしてインストールするには、「Node.js ダウンロード」を参照してください。

  • CommonJS 構文を使用する場合は、「JavaScript ES6/CommonJS 構文」を参照してください。

E メールメッセージの送信要件

Amazon SES は E メールメッセージを作成し、すぐに送信キューに入れます。SendEmailCommand メソッドを使用して E メールを送信するには、メッセージが以下の要件を満たしている必要があります。

  • 検証済みの E メールアドレスまたはドメインからメッセージを送信する必要があります。検証されていないアドレスまたはドメインを使用して E メールを送信しようとすると、"Email address not verified" エラーが発生します。

  • アカウントがまだ Amazon SESサンドボックスにある場合は、検証済みのアドレスまたはドメイン、または Amazon SES Mailbox Simulator に関連付けられた E メールアドレスにのみ送信できます。詳細については、Amazon Simple Email Service デベロッパーガイドの [ Eメールアドレスとドメインの検証]を参照してください。

  • 添付ファイルを含むメッセージの合計サイズは 10 MB より小さくなければなりません。

  • メッセージには少なくとも 1 つの受信者の E メールアドレスを含める必要があります。受信者アドレスには、宛先: アドレス、CC: アドレス、または BCC: アドレスを指定できます。受信者の E メールアドレスが無効な場合 (つまり、UserName@[SubDomain.]Domain.TopLevelDomain のフォーマットではない場合)、メッセージに他の有効な受信者が含まれていても、メッセージ全体が拒否されます。

  • メッセージには、To:、CC:、および : BCCフィールド全体で 50 人を超える受信者を含めることはできません。それ以上の数のユーザーに E メールメッセージを送信する必要がある場合は、受信者リストを 50 ユーザー以下のグループに分割し、sendEmail メソッドを数回呼び出して各グループにメッセージを送信することができます。

E メールを送信する

この例では、Node.js モジュールを使用して Amazon で E メールを送信しますSES。

libsディレクトリを作成し、ファイル名sesClient.jsでNode.js モジュールを作成します。以下のコードをコピーして貼り付けると、Amazon SESクライアントオブジェクトが作成されます。置換 REGION を AWS リージョンで使用します。

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

このサンプルコードは、 にあります GitHub

ses_sendemail.js というファイル名で Node.js モジュールを作成します。必要なクライアントとパッケージのインストールを含め、前述のSDKように を設定します。

オブジェクトを作成して、送信者と受信者のアドレス、件名、E メール本文など、送信する E メールをプレーンテキストとHTML形式で定義するパラメータ値をSESクライアントクラスの SendEmailCommandメソッドに渡します。SendEmailCommand メソッドを呼び出すには、パラメータを渡して Amazon SESサービスオブジェクトを呼び出します。

注記

この例では、必要な AWS Service V3 パッケージクライアント、V3 コマンドをインポートして使用し、非同期/待機パターンで sendメソッドを使用します。この例は、代わりに少し変更を加えてV2コマンドで作成できます。詳細については、「v3 コマンドの使用」を参照してください。

注記

置換 toAddress E メールを送信するアドレス、および fromAddress E メールの送信元の E メールアドレス。

import { SendEmailCommand } from "@aws-sdk/client-ses"; import { sesClient } from "./libs/sesClient.js"; const createSendEmailCommand = (toAddress, fromAddress) => { return new SendEmailCommand({ Destination: { /* required */ CcAddresses: [ /* more items */ ], ToAddresses: [ toAddress, /* 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: fromAddress, ReplyToAddresses: [ /* more items */ ], }); }; const run = async () => { const sendEmailCommand = createSendEmailCommand( "recipient@example.com", "sender@example.com", ); try { return await sesClient.send(sendEmailCommand); } catch (caught) { if (caught instanceof Error && caught.name === "MessageRejected") { /** @type { import('@aws-sdk/client-ses').MessageRejected} */ const messageRejectedError = caught; return messageRejectedError; } throw caught; } };

この例を実行するには、コマンドプロンプトで以下を入力します。E メールは Amazon によって送信用にキューに入れられますSES。

node ses_sendemail.js

このサンプルコードは、 にあります GitHub

テンプレートを使用した E メールを送信する

この例では、Node.js モジュールを使用して Amazon で E メールを送信しますSES。ses_sendtemplatedemail.js というファイル名で Node.js モジュールを作成します。必要なクライアントとパッケージのインストールを含め、前述のSDKように を設定します。

オブジェクトを作成して、送信者と受信者のアドレス、件名、プレーンテキストとHTML形式の E メール本文など、送信する E メールを定義するパラメータ値をSESクライアントクラスの SendTemplatedEmailCommandメソッドに渡します。SendTemplatedEmailCommand メソッドを呼び出すには、パラメータを渡して Amazon SESクライアントサービスオブジェクトを呼び出します。

注記

この例では、必要な AWS Service V3 パッケージクライアント、V3 コマンドをインポートして使用し、非同期/待機パターンで sendメソッドを使用します。この例は、代わりに少し変更を加えてV2コマンドで作成できます。詳細については、「v3 コマンドの使用」を参照してください。

注記

置換 REGION AWS リージョン、USER E メールの送信先となる名前と E メールアドレス、VERIFIED_EMAIL E メールの送信元の E メールアドレス、および TEMPLATE_NAME をテンプレートの名前で指定します。

import { SendTemplatedEmailCommand } from "@aws-sdk/client-ses"; import { getUniqueName, postfix, } from "@aws-doc-sdk-examples/lib/utils/util-string.js"; import { sesClient } from "./libs/sesClient.js"; /** * Replace this with the name of an existing template. */ const TEMPLATE_NAME = getUniqueName("ReminderTemplate"); /** * Replace these with existing verified emails. */ const VERIFIED_EMAIL = postfix(getUniqueName("Bilbo"), "@example.com"); const USER = { firstName: "Bilbo", emailAddress: VERIFIED_EMAIL }; /** * * @param { { emailAddress: string, firstName: string } } user * @param { string } templateName - The name of an existing template in Amazon SES. * @returns { SendTemplatedEmailCommand } */ const createReminderEmailCommand = (user, templateName) => { return new SendTemplatedEmailCommand({ /** * Here's an example of how a template would be replaced with user data: * Template: <h1>Hello {{contact.firstName}},</h1><p>Don't forget about the party gifts!</p> * Destination: <h1>Hello Bilbo,</h1><p>Don't forget about the party gifts!</p> */ Destination: { ToAddresses: [user.emailAddress] }, TemplateData: JSON.stringify({ contact: { firstName: user.firstName } }), Source: VERIFIED_EMAIL, Template: templateName, }); }; const run = async () => { const sendReminderEmailCommand = createReminderEmailCommand( USER, TEMPLATE_NAME, ); try { return await sesClient.send(sendReminderEmailCommand); } catch (caught) { if (caught instanceof Error && caught.name === "MessageRejected") { /** @type { import('@aws-sdk/client-ses').MessageRejected} */ const messageRejectedError = caught; return messageRejectedError; } throw caught; } };

この例を実行するには、コマンドプロンプトで以下を入力します。E メールは Amazon によって送信用にキューに入れられますSES。

node ses_sendtemplatedemail.js

このサンプルコードは、 にあります GitHub

テンプレートを使用した一括Eメールを送信します

この例では、Node.js モジュールを使用して Amazon で E メールを送信しますSES。

libsディレクトリを作成し、ファイル名sesClient.jsでNode.js モジュールを作成します。以下のコードをコピーして貼り付けると、Amazon SESクライアントオブジェクトが作成されます。置換 REGION を AWS リージョンで使用します。

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

このサンプルコードは、 にあります GitHub

ses_sendbulktemplatedemail.js というファイル名で Node.js モジュールを作成します。必要なクライアントとパッケージのインストールを含め、前述のSDKように を設定します。

オブジェクトを作成して、送信者と受信者のアドレス、件名、E メール本文など、送信する E メールを定義するパラメータ値をプレーンテキストとHTML形式でSESクライアントクラスの SendBulkTemplatedEmailCommandメソッドに渡します。SendBulkTemplatedEmailCommand メソッドを呼び出すには、パラメータを渡して Amazon SESサービスオブジェクトを呼び出します。

注記

この例では、必要な AWS Service V3 パッケージクライアント、V3 コマンドをインポートして使用し、非同期/待機パターンで sendメソッドを使用します。この例は、代わりに少し変更を加えてV2コマンドで作成できます。詳細については、「v3 コマンドの使用」を参照してください。

注記

置換 USERS E メールの送信先となる名前と E メールアドレス、VERIFIED_EMAIL_1 E メールの送信元の E メールアドレス、および TEMPLATE_NAME をテンプレートの名前で指定します。

import { SendBulkTemplatedEmailCommand } from "@aws-sdk/client-ses"; import { getUniqueName, postfix, } from "@aws-doc-sdk-examples/lib/utils/util-string.js"; import { sesClient } from "./libs/sesClient.js"; /** * Replace this with the name of an existing template. */ const TEMPLATE_NAME = getUniqueName("ReminderTemplate"); /** * Replace these with existing verified emails. */ const VERIFIED_EMAIL_1 = postfix(getUniqueName("Bilbo"), "@example.com"); const VERIFIED_EMAIL_2 = postfix(getUniqueName("Frodo"), "@example.com"); const USERS = [ { firstName: "Bilbo", emailAddress: VERIFIED_EMAIL_1 }, { firstName: "Frodo", emailAddress: VERIFIED_EMAIL_2 }, ]; /** * * @param { { emailAddress: string, firstName: string }[] } users * @param { string } templateName the name of an existing template in SES * @returns { SendBulkTemplatedEmailCommand } */ const createBulkReminderEmailCommand = (users, templateName) => { return new SendBulkTemplatedEmailCommand({ /** * Each 'Destination' uses a corresponding set of replacement data. We can map each user * to a 'Destination' and provide user specific replacement data to create personalized emails. * * Here's an example of how a template would be replaced with user data: * Template: <h1>Hello {{name}},</h1><p>Don't forget about the party gifts!</p> * Destination 1: <h1>Hello Bilbo,</h1><p>Don't forget about the party gifts!</p> * Destination 2: <h1>Hello Frodo,</h1><p>Don't forget about the party gifts!</p> */ Destinations: users.map((user) => ({ Destination: { ToAddresses: [user.emailAddress] }, ReplacementTemplateData: JSON.stringify({ name: user.firstName }), })), DefaultTemplateData: JSON.stringify({ name: "Shireling" }), Source: VERIFIED_EMAIL_1, Template: templateName, }); }; const run = async () => { const sendBulkTemplateEmailCommand = createBulkReminderEmailCommand( USERS, TEMPLATE_NAME, ); try { return await sesClient.send(sendBulkTemplateEmailCommand); } catch (caught) { if (caught instanceof Error && caught.name === "MessageRejected") { /** @type { import('@aws-sdk/client-ses').MessageRejected} */ const messageRejectedError = caught; return messageRejectedError; } throw caught; } };

この例を実行するには、コマンドプロンプトで以下を入力します。E メールは Amazon によって送信用にキューに入れられますSES。

node ses_sendbulktemplatedemail.js

このサンプルコードは、 にあります GitHub