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

AWS SDK for JavaScript v2 の近日発表 end-of-support しました。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

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

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

JavaScript code example that applies to Node.js execution

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

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

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

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

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

シナリオ

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

前提条件タスク

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

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

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

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

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

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

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

E メールの送信

この例では、Node.js モジュールを使用して Amazon SES で E メールを送信します。ses_sendemail.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。

送信者と受信者のアドレス、件名、プレーンテキストおよび HTML 形式の E メール本文など、送信する E メールを定義するパラメータ値を 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); });

この例を実行するには、コマンドラインに次のように入力します。E メールは Amazon SES による送信のためにキューに登録されます。

node ses_sendemail.js

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

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

この例では、Node.js モジュールを使用して Amazon SES で E メールを送信します。ses_sendtemplatedemail.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。

送信者と受信者のアドレス、件名、プレーンテキストおよび HTML 形式の E メール本文など、送信する E メールを定義するパラメータ値を 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); });

この例を実行するには、コマンドラインに次のように入力します。E メールは Amazon SES による送信のためにキューに登録されます。

node ses_sendtemplatedemail.js

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

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

この例では、Node.js モジュールを使用して Amazon SES で E メールを送信します。ses_sendbulktemplatedemail.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を設定します。

送信者と受信者のアドレス、件名、プレーンテキストおよび HTML 形式の E メール本文など、送信する E メールを定義するパラメータ値を 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); });

この例を実行するには、コマンドラインに次のように入力します。E メールは Amazon SES による送信のためにキューに登録されます。

node ses_sendbulktemplatedemail.js

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