

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

# テンプレートを使用して、Amazon SES API でパーソナライズされた E メールを送信する
<a name="send-personalized-email-api"></a>

Amazon SES では、*保存済みテンプレート*を使用するか、*インラインテンプレート*を使用して、テンプレートに基づく E メールを送信できます。
+ **保存済みテンプレート** – Amazon SES v2 API の `CreateEmailTemplate` オペレーションを使用して SES で作成および保存される [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html) リソースを指します。このテンプレートには、書き込まれたコンテンツとインラインで変数 (プレースホルダー) を含む E メールの件名と本文が含まれています。保存済みテンプレートの名前とテンプレート内のプレースホルダー変数への動的データは、`SendEmail` または v2 API `SendBulkEmail` オペレーションを呼び出すときに提供されます。

  *保存済みテンプレート*は簡単に再利用でき、似たような種類の E メールを送信する際の時間と労力を減らすことができます。各 E メールをゼロから作成する代わりに、基本構造と設計を一度作成すれば、後はテンプレート内の動的コンテンツを更新するだけで済みます。
+ **インラインテンプレート** – `Template` リソースは使用されません。代わりに、作成されたコンテンツとインラインで変数 (プレースホルダー) を含む E メールの件名と本文が、これらのプレースホルダー変数の値とともに、`SendEmail` または v2 API `SendBulkEmail` オペレーションを呼び出すときに提供されます。

  *インラインテンプレート*は、アプリケーションロジック内にテンプレートコンテンツを直接含められるようにすることで、SES アカウントのテンプレートリソースを管理する必要をなくし、統合プロセスを簡素にします。これにより、一括 E メールを送信するプロセスを効率化します。あたりの 20,000 テンプレートの制限にはカウントされません AWS リージョン。

*保存済みテンプレート*を使用する場合、次の制限が適用されます。
+ それぞれに最大 20,000 個の E メールテンプレートを作成できます AWS リージョン。
+ 各テンプレートは、テキストと HTML パートの両方を含めて、最大 500 KB のサイズまで可能です。

*インラインテンプレート*を使用する場合、次の制限が適用されます。
+ 各入力 JSON ファイルは、テキスト部分と HTML 部分の両方を含めて、最大 1 MB のサイズにすることができます。

以下は、*保存済みテンプレート*と*インラインテンプレート*の両方に適用されます。
+ 使用できる置換変数の数に制限はありません。
+ `SendBulkEmail` オペレーションの呼び出しごとに、最大 50 個の送信先オブジェクトに E メールを送信できます。[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html) オブジェクトには、**ToAddresses**、**CcAddresses**、および **BccAddresses** で定義された複数の受信者を含めることができます。1 回の v2 API の呼び出しで連絡できる送信先の数が、アカウントの最大送信レートによって制限される場合があります。詳細については、「[Amazon SES 送信制限の管理](manage-sending-quotas.md)」を参照してください。

この章には、*保存済みテンプレート*と*インラインテンプレート*の両方を使用する例を含む手順が含まれています。

**注記**  
これらの手順では、 AWS CLIがすでにインストールされ、設定されていることを前提としています。のインストールと設定の詳細については AWS CLI、 [AWS Command Line Interface ユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/)を参照してください。

## (オプション) パート 1: レンダリング失敗イベント通知を設定する
<a name="send-personalized-email-set-up-notifications"></a>

 無効なパーソナライズコンテンツを含む E メールを送信する場合、Amazon SES はメッセージを受け入れることもありますが、配信することはできません。このため、パーソナライズされた E メールを送信する場合、Amazon SNS を通じてレンダリング失敗イベント通知を送信するように SES を設定する必要があります。レンダリング失敗イベント通知を受信した場合、無効なコンテンツが含まれていたメッセージを確認し、問題を修正して、もう一度メッセージを送信できます。

このセクションの手順はオプションですが、強くお勧めします。

**レンダリング失敗イベント通知を設定するには**

1. Amazon SNS トピックを作成する。手続きについては、Amazon Simple Notification Service デベロッパーガイドの*トピックの作成*を参照してください。

1. Amazon SNS トピックを購読します。たとえば、E メールでレンダリング失敗通知を受信する場合は、そのトピックを E メールエンドポイント (E メールアドレス) で購読する必要があります。

   手順については、[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html)の*トピックを購読する*を参照してください。

1. 「[イベント発行の Amazon SNS イベント送信先のセットアップ](event-publishing-add-event-destination-sns.md)」の手順を完了して、設定セットをセットアップし、レンダリング失敗イベントを Amazon SNS トピックに発行します。

## (オプション) パート 2: E メールのテンプレートを作成する
<a name="send-personalized-email-create-template"></a>

*保存済みテンプレート*を使用する場合、このセクションでは、SES [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateEmailTemplate.html) v2 API オペレーションを使用してテンプレートを作成する方法を示します。*インラインテンプレート*を使用する場合は、このステップをスキップできます。

この手順は、 AWS CLIがすでにインストールされ、設定されていることを前提としています。のインストールと設定の詳細については AWS CLI、 [AWS Command Line Interface ユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/)を参照してください。

**テンプレートを作成するには**

1. テキストエディタで、新しいファイルを作成し、必要に応じてこのファイルをカスタマイズする次のコードを貼り付けます。

   ```
   {
       "TemplateName": "MyTemplate",
       "TemplateContent": {
           "Subject": "Greetings, {{name}}!",
           "Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.",
           "Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>"
       }
   }
   ```

   このコードには次のプロパティが含まれています。
   + **TemplateName** – `Template` リソースの名前。E メールを送信する場合に、この名前を参照します。
   + **TemplateContent** – 次の属性のコンテナ。
     + [**Subject**] – E メールの件名です。このプロパティには、置換タグが含まれる場合があります。これらのタグは以下のフォーマットを使用します: `{{tagname}}`。E メールを送信するとき、各宛先の `tagname` に対する値を指定できます。
     + **Html** – E メールの HTML 本文。このプロパティには、置換タグが含まれる場合があります。前述の例には、`{{name}}` および `{{favoriteanimal}}` の 2 つのタグが含まれます。
     + **Text** – E メールのテキスト本文。E メールクライアントに HTML コンテンツが表示されない受信者には、このバージョンの E メールが表示されます。また、このプロパティには置換タグが含まれる場合があります。

1. 前の例をニーズに合わせてカスタマイズし、*mytemplate.json* ファイルとして保存します。

1. コマンドラインで次のコマンドを入力し、[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateEmailTemplate.html) v2 API オペレーションを使用して新しいテンプレートを作成します。

   ```
   aws sesv2 create-email-template --cli-input-json file://mytemplate.json
   ```

## パート 3: パーソナライズされた E メールを送信する
<a name="send-personalized-email-api-operations"></a>

次の 2 つの SES v2 API オペレーションを使用して、*保存済みテンプレート*または*インラインテンプレート*で E メールを送信できます。
+ [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html) オペレーションは、カスタマイズされた E メールを 1 つの送信先オブジェクトに送信するために役立ちます。v2 API [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html) オブジェクトには、*ToAddresses*、*CcAddresses*、および *BccAddresses* の各プロパティを含めることができます。これらは任意の組み合わせで使用でき、同じ E メールを受信する 1 つ以上の E メールアドレスを含めることができます。
+ [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html) オペレーションは、v2 API への単一の呼び出しで複数の送信先オブジェクトそれぞれに独自の E メールを送信するために役立ちます。

このセクションでは、 を使用して、これらの AWS CLI 送信オペレーションの両方を使用してテンプレート化された E メールを送信する方法の例を示します。

### 単一の送信先オブジェクトにテンプレートに基づく E メールを送信する
<a name="send-templated-email-single-destination"></a>

[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html) オペレーションを使用して、1 つの送信先オブジェクトで定義された 1 人以上の受信者に E メールを送信できます。[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html) オブジェクトにあるすべての受信者に、同じ E メールが届きます。

**単一の送信先オブジェクトにテンプレートに基づく E メールを送信するには**

1. *保存済みテンプレート*を使用するか*インラインテンプレート*を使用するかに応じて、テキストエディタに貼り付けるそれぞれのコード例を選択し、必要に応じてカスタマイズします。

------
#### [ Stored template code example ]

   前のステップで作成したテンプレート *MyTemplate* が `TemplateName` パラメータの値として参照されていることに注意してください。

   ```
   {
       "FromEmailAddress": "Mary Major <mary.major@example.com>",
       "Destination": {
           "ToAddresses": [
               "alejandro.rosalez@example.com", "jimmy.jet@example.com"
           ]
       },
       "Content": {
           "Template": {
               "TemplateName": "MyTemplate",
               "TemplateData": "{ \"name\":\"Alejandro\", \"favoriteanimal\": \"alligator\" }"
           }
       },
       "ConfigurationSetName": "ConfigSet"
   }
   ```

   このコードには次のプロパティが含まれています。
   + **FromEmailAddress** – 送信者の E メールアドレス。
   + **送信先** – *ToAddresses*、*CcAddresses*、および *BccAddresses* の各プロパティで定義された E メール受信者を含むオブジェクト。これらは任意の組み合わせで使用でき、同じ E メールを受信する 1 つ以上の E メールアドレスを含めることができます。
   + **TemplateName** – E メールに対して適用する `Template` リソースの名前。
   + **TemplateData** – キーと値のペアを含むエスケープされた JSON 文字列。キーは保存済みテンプレートの `TemplateContent` プロパティに定義された変数 (`{{name}}` など) に対応します。値は変数を置き換える内容を表します。
   + **ConfigurationSetName** – E メールを送信するときに使用する設定セットの名前。
**注記**  
レンダリング失敗イベントを Amazon SNS に発行するように設定された設定セットを使用することをお勧めします。詳細については、「[(オプション) パート 1: レンダリング失敗イベント通知を設定する](#send-personalized-email-set-up-notifications)」を参照してください。

------
#### [ Inline template code example ]

   `TemplateContent` プロパティ (通常は*保存済みテンプレート*で定義) は、これを*インライン*テンプレートにする `TemplateData` プロパティとともに*インライン*で定義されていることに注意してください。

   ```
   {
       "FromEmailAddress": "Mary Major <mary.major@example.com>",
       "Destination": {
           "ToAddresses": [
               "alejandro.rosalez@example.com", "jimmy.jet@example.com"
           ]
       },
       "Content": {
           "Template": {
               "TemplateContent": {
                   "Subject": "Greetings, {{name}}!",
                   "Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.",
                   "Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>"
               },
               "TemplateData": "{ \"name\":\"Alejandro\", \"favoriteanimal\": \"alligator\" }"
           }
       },
       "ConfigurationSetName": "ConfigSet"
   }
   ```

   このコードには次のプロパティが含まれています。
   + **FromEmailAddress** – 送信者の E メールアドレス。
   + **送信先** – *ToAddresses*、*CcAddresses*、および *BccAddresses* の各プロパティで定義された E メール受信者を含むオブジェクト。これらは任意の組み合わせで使用でき、同じ E メールを受信する 1 つ以上の E メールアドレスを含めることができます。
   + **TemplateContent** – 次の属性のコンテナ。
     + [**Subject**] – E メールの件名です。このプロパティには、置換タグが含まれる場合があります。これらのタグは以下のフォーマットを使用します: `{{tagname}}`。E メールを送信するとき、各宛先の `tagname` に対する値を指定できます。
     + **Html** – E メールの HTML 本文。このプロパティには、置換タグが含まれる場合があります。前述の例には、`{{name}}` および `{{favoriteanimal}}` の 2 つのタグが含まれます。
     + **Text** – E メールのテキスト本文。E メールクライアントに HTML コンテンツが表示されない受信者には、このバージョンの E メールが表示されます。また、このプロパティには置換タグが含まれる場合があります。
   + **TemplateData** – キーと値のペアを含むエスケープされた JSON 文字列。キーは、`{{name}}` など、このファイルの `TemplateContent` プロパティで定義された変数に対応します。値は変数を置き換える内容を表します。
   + **ConfigurationSetName** – E メールを送信するときに使用する設定セットの名前。
**注記**  
レンダリング失敗イベントを Amazon SNS に発行するように設定された設定セットを使用することをお勧めします。詳細については、「[(オプション) パート 1: レンダリング失敗イベント通知を設定する](#send-personalized-email-set-up-notifications)」を参照してください。

------

1. 前の例をニーズに合わせてカスタマイズし、*myemail.json* ファイルとして保存します。

1. コマンドラインで、次の v2 API コマンドを入力して E メールを送信します。

   ```
   aws sesv2 send-email --cli-input-json file://myemail.json
   ```

### 複数の送信先オブジェクトにテンプレートに基づく E メールを送信する
<a name="send-templated-email-multiple-destinations"></a>

[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html) オペレーションを使用して、SES v2 API への単一の呼び出しで、複数の送信先オブジェクトにメールを送信できます。SES は、各 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html) オブジェクトで、1 名または複数の受信者それぞれに独自の E メールを送信します。

**複数の送信先オブジェクトにテンプレートに基づく E メールを送信するには**

1. *保存済みテンプレート*を使用するか*インラインテンプレート*を使用するかに応じて、テキストエディタに貼り付けるそれぞれのコード例を選択し、必要に応じてカスタマイズします。

------
#### [ Stored template code example ]

   前のステップで作成したテンプレート *MyTemplate* が `TemplateName` パラメータの値として参照されていることに注意してください。

   ```
   {
       "FromEmailAddress": "Mary Major <mary.major@example.com>",
       "DefaultContent": {
           "Template": {
               "TemplateName": "MyTemplate",
               "TemplateData": "{ \"name\":\"friend\", \"favoriteanimal\":\"unknown\" }"
           }
       },
       "BulkEmailEntries": [
           {
               "Destination": {
                   "ToAddresses": [
                       "anaya.iyengar@example.com"
                   ]
               },
               "ReplacementEmailContent": {
                   "ReplacementTemplate": {
                       "ReplacementTemplateData": "{ \"name\":\"Anaya\", \"favoriteanimal\":\"angelfish\" }"
                   }
               }
           },
           {
               "Destination": {
                   "ToAddresses": [
                       "liu.jie@example.com"
                   ]
               },
               "ReplacementEmailContent": {
                   "ReplacementTemplate": {
                       "ReplacementTemplateData": "{ \"name\":\"Liu\", \"favoriteanimal\":\"lion\" }"
                   }
               }
           },
           {
               "Destination": {
                   "ToAddresses": [
                       "shirley.rodriguez@example.com"
                   ]
               },
               "ReplacementEmailContent": {
                   "ReplacementTemplate": {
                       "ReplacementTemplateData": "{ \"name\":\"Shirley\", \"favoriteanimal\":\"shark\" }"
                   }
               }
           },
           {
               "Destination": {
                   "ToAddresses": [
                       "richard.roe@example.com"
                   ]
               },
               "ReplacementEmailContent": {
                   "ReplacementTemplate": {
                       "ReplacementTemplateData": "{}"
                   }
               }
           }
       ],
       "ConfigurationSetName": "ConfigSet"
   }
   ```

   このコードには次のプロパティが含まれています。
   + **FromEmailAddress** – 送信者の E メールアドレス。
   + **DefaultContent** – `TemplateName` および `TemplateData` オブジェクトを含む JSON オブジェクト。
   + **TemplateName** – E メールに対して適用する `Template` リソースの名前。
   + **TemplateData** – `ReplacementEmailContent` オブジェクトで空の JSON オブジェクト `{}` が `ReplacementTemplateData` プロパティに含まれている場合に使用されるキーと値のペアが含まれます。
   + **BulkEmailEntries** – 1 つ以上の `Destination` オブジェクトを含む配列。
   + **送信先** – *ToAddresses*、*CcAddresses*、および *BccAddresses* の各プロパティで定義された E メール受信者を含むオブジェクト。これらは任意の組み合わせで使用でき、同じ E メールを受信する 1 つ以上の E メールアドレスを含めることができます。
   + **ReplacementTemplateData** – キーと値のペアを含むエスケープされた JSON 文字列。キーはテンプレート内の変数 (`{{name}}` など) に対応します。値は E メール内の変数を置き換える内容を表します。(ここで JSON 文字列が空で、`{}` で示されている場合、`DefaultContent` オブジェクト内の `TemplateData` プロパティで定義されたキーと値のペアが使用されます)。
   + **ConfigurationSetName** – E メールを送信するときに使用する設定セットの名前。
**注記**  
レンダリング失敗イベントを Amazon SNS に発行するように設定された設定セットを使用することをお勧めします。詳細については、「[(オプション) パート 1: レンダリング失敗イベント通知を設定する](#send-personalized-email-set-up-notifications)」を参照してください。

------
#### [ Inline template code example ]

   `TemplateContent` プロパティ (通常は*保存済みテンプレート*で定義) は、これを*インライン*テンプレートにする `TemplateData` プロパティとともに*インライン*で定義されていることに注意してください。

   ```
   {
       "FromEmailAddress": "Mary Major <mary.major@example.com>",
       "DefaultContent": {
           "Template": {
               "TemplateContent": {
                   "Subject": "Greetings, {{name}}!",
                   "Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.",
                   "Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>"
               },
               "TemplateData": "{ \"name\":\"friend\", \"favoriteanimal\":\"unknown\" }"
           }
       },
       "BulkEmailEntries": [
           {
               "Destination": {
                   "ToAddresses": [
                       "anaya.iyengar@example.com"
                   ]
               },
               "ReplacementEmailContent": {
                   "ReplacementTemplate": {
                       "ReplacementTemplateData": "{ \"name\":\"Anaya\", \"favoriteanimal\":\"angelfish\" }"
                   }
               }
           },
           {
               "Destination": {
                   "ToAddresses": [
                       "liu.jie@example.com"
                   ]
               },
               "ReplacementEmailContent": {
                   "ReplacementTemplate": {
                       "ReplacementTemplateData": "{ \"name\":\"Liu\", \"favoriteanimal\":\"lion\" }"
                   }
               }
           },
           {
               "Destination": {
                   "ToAddresses": [
                       "shirley.rodriguez@example.com"
                   ]
               },
               "ReplacementEmailContent": {
                   "ReplacementTemplate": {
                       "ReplacementTemplateData": "{ \"name\":\"Shirley\", \"favoriteanimal\":\"shark\" }"
                   }
               }
           },
           {
               "Destination": {
                   "ToAddresses": [
                       "richard.roe@example.com"
                   ]
               },
               "ReplacementEmailContent": {
                   "ReplacementTemplate": {
                       "ReplacementTemplateData": "{}"
                   }
               }
           }
       ],
       "ConfigurationSetName": "ConfigSet"
   }
   ```

   このコードには次のプロパティが含まれています。
   + **FromEmailAddress** – 送信者の E メールアドレス。
   + **DefaultContent** – `TemplateContent` および `TemplateData` オブジェクトを含む JSON オブジェクト。
   + **TemplateContent** – 次の属性のコンテナ。
     + [**Subject**] – E メールの件名です。このプロパティには、置換タグが含まれる場合があります。これらのタグは以下のフォーマットを使用します: `{{tagname}}`。E メールを送信するとき、各宛先の `tagname` に対する値を指定できます。
     + **Html** – E メールの HTML 本文。このプロパティには、置換タグが含まれる場合があります。前述の例には、`{{name}}` および `{{favoriteanimal}}` の 2 つのタグが含まれます。
     + **Text** – E メールのテキスト本文。E メールクライアントに HTML コンテンツが表示されない受信者には、このバージョンの E メールが表示されます。また、このプロパティには置換タグが含まれる場合があります。
   + **TemplateData** – `ReplacementEmailContent` オブジェクトで空の JSON オブジェクト `{}` が `ReplacementTemplateData` プロパティに含まれている場合に使用されるキーと値のペアが含まれます。
   + **BulkEmailEntries** – 1 つ以上の `Destination` オブジェクトを含む配列。
   + **送信先** – *ToAddresses*、*CcAddresses*、および *BccAddresses* の各プロパティで定義された E メール受信者を含むオブジェクト。これらは任意の組み合わせで使用でき、同じ E メールを受信する 1 つ以上の E メールアドレスを含めることができます。
   + **ReplacementTemplateData** – キーと値のペアを含むエスケープされた JSON 文字列。キーは、`{{name}}` など、このファイルの `TemplateContent` プロパティで定義された変数に対応します。値は E メール内の変数を置き換える内容を表します。(ここで JSON 文字列が空で、`{}` で示されている場合、`DefaultContent` オブジェクト内の `TemplateData` プロパティで定義されたキーと値のペアが使用されます)。
   + **ConfigurationSetName** – E メールを送信するときに使用する設定セットの名前。
**注記**  
レンダリング失敗イベントを Amazon SNS に発行するように設定された設定セットを使用することをお勧めします。詳細については、「[(オプション) パート 1: レンダリング失敗イベント通知を設定する](#send-personalized-email-set-up-notifications)」を参照してください。

------

1. ニーズに合わせて上記のステップでコードの値を変更し、*mybulkemail.json* としてファイルを保存します。

1. コマンドラインで、次の v2 API コマンドを入力して一括 E メールを送信します。

   ```
   aws sesv2 send-bulk-email --cli-input-json file://mybulkemail.json
   ```

# E メールの高度なパーソナライズ
<a name="send-personalized-email-advanced"></a>

 *保存済みテンプレート*を使用している場合、つまり SES v2 API で `CreateEmailTemplate` オペレーションを使用して Amazon SES で [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html) リソースを作成した場合、Handlebars システムを活用して、ネストされた属性、配列のイテレーション、基本的な条件ステートメント、インライン部分の作成などの高度な機能を含むテンプレートを作成できます。このセクションでは、これらの機能の例を示します。

このセクションに記載されている機能の他にも、Handlebars にはさまざまな機能を提供します。詳細については、[handlebarsjs.com](https://handlebarsjs.com/guide/builtin-helpers.html) の「[Built-In Helpers](http://handlebarsjs.com)」を参照してください。

**注記**  
SES は、メッセージの HTML テンプレートをレンダリングするときに HTML コンテンツをエスケープしません。つまり、コンタクトフォームなどのユーザー入力データを含める場合は、クライアント側でエスケープする必要があります。

**Topics**
+ [入れ子の属性の解析](#send-personalized-email-advanced-nested)
+ [リストに対する反復処理](#send-personalized-email-advanced-iterating)
+ [基本的な条件ステートメントの使用](#send-personalized-email-advanced-conditionals)
+ [インラインパーシャルの作成](#send-personalized-email-advanced-inline-partials)

## 入れ子の属性の解析
<a name="send-personalized-email-advanced-nested"></a>

Handlebars には入れ子パスのサポートが含まれています。入れ子パスを使うことで、複雑な顧客データを簡単に整理し、E メールテンプレート内でそのデータを参照できるようになります。

たとえば、受信者のデータをいくつかの一般的なカテゴリで整理し、各カテゴリに詳細な情報を含めることができます。以下のコード例は、このような構造を 1 人の受信者で実現しています。

```
{
  "meta":{
    "userId":"51806220607"
  },
  "contact":{
    "firstName":"Anaya",
    "lastName":"Iyengar",
    "city":"Bengaluru",
    "country":"India",
    "postalCode":"560052"
  },
  "subscription":[
    {
      "interest":"Sports"
    },
    {
      "interest":"Travel"
    },
    {
      "interest":"Cooking"
    }
  ]
}
```

E メールテンプレートで入れ子の属性を参照するには、親属性の名前、ピリオド (.)、値を含める属性の名前の順に指定します。たとえば前述の例で示したデータ構造を使用し、それぞれの受信者のファーストネームを E メールテンプレートに含める場合は、次のテキストを E メールテンプレートに含めます。`Hello {{contact.firstName}}!`

Handlebars は、複数の階層にわたって入れ子になったパスを解析できます。つまり、テンプレートのデータ構造を柔軟に設定することができます。

## リストに対する反復処理
<a name="send-personalized-email-advanced-iterating"></a>

`each`ヘルパー関数は、配列内の項目を反復処理します。以下のコード例の E メールテンプレートでは、`each`ヘルパー関数を使用して、それぞれの受信者の関心を項目別に記載したリストを作成しています。

```
{
  "Template": {
    "TemplateName": "Preferences",
    "SubjectPart": "Subscription Preferences for {{contact.firstName}} {{contact.lastName}}",
    "HtmlPart": "<h1>Your Preferences</h1>
                 <p>You have indicated that you are interested in receiving 
                   information about the following subjects:</p>
                 <ul>
                   {{#each subscription}}
                     <li>{{interest}}</li>
                   {{/each}}
                 </ul>
                 <p>You can change these settings at any time by visiting 
                    the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}>
                    Preference Center</a>.</p>",
    "TextPart": "Your Preferences\n\nYou have indicated that you are interested in 
                 receiving information about the following subjects:\n
                 {{#each subscription}}
                   - {{interest}}\n
                 {{/each}}
                 \nYou can change these settings at any time by 
                 visiting the Preference Center at 
                 https://www.example.com/prefererences/i.aspx?id={{meta.userId}}"
  }
}
```

**重要**  
上記のコード例の `HtmlPart`および`TextPart`属性には、読みやすくするための改行が含まれています。テンプレートの JSON ファイルでは、これらの値に改行を含めることはできません。この例を独自の JSON ファイルにコピーして貼り付ける場合は、`HtmlPart` および`TextPart`セクションの改行と不要なスペースを削除してから次に進んでください。

テンプレートを作成したら、`SendEmail`または`SendBulkEmail`オペレーションを使用し、このテンプレートを使って受信者に E メールを送信します。`Interests`オブジェクトに値が少なくとも 1 つあれば、それぞれの受信者は、項目別の関心リストを含む E メールを受信します。以下の例は、上記のテンプレートを使用した複数の受信者への E メール送信に使用できる JSON ファイルを示しています。

```
{
  "Source":"Sender Name <sender@example.com>",
  "Template":"Preferences",
  "Destinations":[
    {
      "Destination":{
        "ToAddresses":[
          "anaya.iyengar@example.com"
        ]
      },
      "ReplacementTemplateData":"{\"meta\":{\"userId\":\"51806220607\"},\"contact\":{\"firstName\":\"Anaya\",\"lastName\":\"Iyengar\"},\"subscription\":[{\"interest\":\"Sports\"},{\"interest\":\"Travel\"},{\"interest\":\"Cooking\"}]}"
      },
    {
      "Destination":{ 
        "ToAddresses":[
          "shirley.rodriguez@example.com"
        ]
      },
      "ReplacementTemplateData":"{\"meta\":{\"userId\":\"1981624758263\"},\"contact\":{\"firstName\":\"Shirley\",\"lastName\":\"Rodriguez\"},\"subscription\":[{\"interest\":\"Technology\"},{\"interest\":\"Politics\"}]}"
    }
  ],
  "DefaultTemplateData":"{\"meta\":{\"userId\":\"\"},\"contact\":{\"firstName\":\"Friend\",\"lastName\":\"\"},\"subscription\":[]}"
}
```

上記の例でリストされた受信者に`SendBulkEmail` オペレーションを使用して E メールを送信すると、受信者には以下の画像のようなメッセージが届きます。

![\[Preferences notification listing Sports, Travel, and Cooking as selected interests.\]](http://docs.aws.amazon.com/ja_jp/ses/latest/dg/images/send-personalized-email-advanced-condition-interest.png)


## 基本的な条件ステートメントの使用
<a name="send-personalized-email-advanced-conditionals"></a>

このセクションの内容は、前のセクションで説明した例に基づいています。前のセクションの例では、`each`ヘルパーを使用して関心のリストを反復処理しています。ただし、関心が指定されていない受信者には、空白のリストが記載された E メールが届くことになります。`{{if}}`ヘルパーを使用すると、テンプレート内のデータに特定の属性が存在する場合に、E メールに異なるフォーマットを適用することができます。以下のコードでは、`{{if}}` ヘルパーを使用して、`Subscription` 配列に何らかの値が含まれている場合に、前のセクションの箇条書きリストを表示しています。配列が空の場合、別のテキストブロックが表示されます。

```
{
  "Template": {
    "TemplateName": "Preferences2",
    "SubjectPart": "Subscription Preferences for {{contact.firstName}} {{contact.lastName}}",
    "HtmlPart": "<h1>Your Preferences</h1>
                 <p>Dear {{contact.firstName}},</p>
                 {{#if subscription}}
                   <p>You have indicated that you are interested in receiving 
                     information about the following subjects:</p>
                     <ul>
                     {{#each subscription}}
                       <li>{{interest}}</li>
                     {{/each}}
                     </ul>
                     <p>You can change these settings at any time by visiting 
                       the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}>
                       Preference Center</a>.</p>
                 {{else}}
                   <p>Please update your subscription preferences by visiting 
                     the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}>
                     Preference Center</a>.
                 {{/if}}",
    "TextPart": "Your Preferences\n\nDear {{contact.firstName}},\n\n
                 {{#if subscription}}
                   You have indicated that you are interested in receiving 
                   information about the following subjects:\n
                   {{#each subscription}}
                     - {{interest}}\n
                   {{/each}}
                   \nYou can change these settings at any time by visiting the 
                   Preference Center at https://www.example.com/prefererences/i.aspx?id={{meta.userId}}.
                 {{else}}
                   Please update your subscription preferences by visiting the 
                   Preference Center at https://www.example.com/prefererences/i.aspx?id={{meta.userId}}.
                 {{/if}}"
  }
}
```

**重要**  
上記のコード例の`HtmlPart`および`TextPart`属性には、読みやすくするための改行が含まれています。テンプレートの JSON ファイルでは、これらの値に改行を含めることはできません。この例を独自の JSON ファイルにコピーして貼り付ける場合は、`HtmlPart`および`TextPart`セクションの改行と不要なスペースを削除してから次に進んでください。

以下の例は、上記のテンプレートを使用した複数の受信者への E メール送信に使用できる JSON ファイルを示しています。

```
{
  "Source":"Sender Name <sender@example.com>",
  "Template":"Preferences2",
  "Destinations":[
    {
      "Destination":{
        "ToAddresses":[
          "anaya.iyengar@example.com"
        ]
      },
      "ReplacementTemplateData":"{\"meta\":{\"userId\":\"51806220607\"},\"contact\":{\"firstName\":\"Anaya\",\"lastName\":\"Iyengar\"},\"subscription\":[{\"interest\":\"Sports\"},{\"interest\":\"Cooking\"}]}"
      },
    {
      "Destination":{ 
        "ToAddresses":[
          "shirley.rodriguez@example.com"
        ]
      },
      "ReplacementTemplateData":"{\"meta\":{\"userId\":\"1981624758263\"},\"contact\":{\"firstName\":\"Shirley\",\"lastName\":\"Rodriguez\"}}"
    }
  ],
  "DefaultTemplateData":"{\"meta\":{\"userId\":\"\"},\"contact\":{\"firstName\":\"Friend\",\"lastName\":\"\"},\"subscription\":[]}"
}
```

この例の場合、テンプレートのデータに関心リストが含まれている受信者は、前のセクションで示した例と同じ E メールを受け取ります。一方、テンプレートデータに関心が含まれていない受信者には、以下の画像のような E メールが届きます。

![\[Email message with header "Your Preferences" and text about updating subscription preferences.\]](http://docs.aws.amazon.com/ja_jp/ses/latest/dg/images/send-personalized-email-advanced-condition-nointerest.png)


## インラインパーシャルの作成
<a name="send-personalized-email-advanced-inline-partials"></a>

インラインパーシャルを使用して、文字列の繰り返しを含むテンプレートを簡素化することができます。たとえば、テンプレートの先頭に以下のコードを追加することで、受信者のファーストネームと (存在する場合は) ラストネームを含むインラインパーシャルを作成できます。

```
{{#* inline \"fullName\"}}{{firstName}}{{#if lastName}} {{lastName}}{{/if}}{{/inline}}\n
```

**注記**  
テンプレートの内容と`\n` ブロックを分離するためには、改行文字 (`{{inline}}`) が必要です。最終的な出力には改行は表示されません。

`fullName`パーシャルを作成したら、以下の例のように、大なり記号 (>)、スペース、パーシャルの名前を指定することで (`{{> fullName}}`)、このパーシャルをテンプレートの任意の場所に含めることができます。インラインパーシャルは、メールの特定部分をまたがって適用されません。たとえば E メールの HTML バージョンとテキストバージョンに同じインラインパーシャルを使用する場合、`HtmlPart`および`TextPart`セクションの両方に、このインラインパーシャルを定義する必要があります。

インラインパーシャルを、配列を反復処理する際に使用することもできます。以下のコードを使用して、`fullName`インラインパーシャルを使用するテンプレートを作成できます。この例では、受信者の名前とその他の名前の配列の両方に、インラインパーシャルが適用されています。

```
{
  "Template": {
    "TemplateName": "Preferences3",
    "SubjectPart": "{{firstName}}'s Subscription Preferences",
    "HtmlPart": "{{#* inline \"fullName\"}}
                   {{firstName}}{{#if lastName}} {{lastName}}{{/if}}
                 {{/inline~}}\n
                 <h1>Hello {{> fullName}}!</h1>
                 <p>You have listed the following people as your friends:</p>
                 <ul>
                 {{#each friends}}
                   <li>{{> fullName}}</li>
                 {{/each}}</ul>",
    "TextPart": "{{#* inline \"fullName\"}}
                   {{firstName}}{{#if lastName}} {{lastName}}{{/if}}
                 {{/inline~}}\n
                 Hello {{> fullName}}! You have listed the following people 
                 as your friends:\n
                 {{#each friends}}
                   - {{> fullName}}\n
                 {{/each}}"
  }
}
```

**重要**  
上記のコード例の`HtmlPart`および`TextPart`属性には、読みやすくするための改行が含まれています。テンプレートの JSON ファイルでは、これらの値に改行を含めることはできません。この例を独自の JSON ファイルにコピーして貼り付ける場合は、これらのセクションの改行と不要なスペースを削除してください。

# E メールテンプレートの管理
<a name="send-personalized-email-manage-templates"></a>

[E メールテンプレート](send-personalized-email-api.md)の作成に加えて、Amazon SES v2 API を使用して、既存のテンプレートを更新または削除したり、既存のすべてのテンプレートを一覧表示したり、テンプレートの内容を表示したりできます。

このセクションでは、 AWS CLI を使用して SES テンプレートに関連するタスクを実行する手順について説明します。

**注記**  
これらの手順では、 AWS CLIがすでにインストールされ、設定されていることを前提としています。のインストールと設定の詳細については AWS CLI、 [AWS Command Line Interface ユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/)を参照してください。

## E メールテンプレートの一覧表示
<a name="send-personalized-email-manage-templates-list"></a>

SES v2 API オペレーション [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_ListEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_ListEmailTemplate.html) を使用して、既存の E メールテンプレートのリストを表示します。

**E メールテンプレートの一覧を表示するには**
+ コマンドラインで以下のコマンドを入力します。

  ```
  aws sesv2 list-email-templates
  ```

  現在のリージョンの SES アカウントに既存の E メールテンプレートがある場合、このコマンドは次の例のようなレスポンスを返します。

  ```
  {
      "TemplatesMetadata": [
          {
              "Name": "SpecialOffers",
              "CreatedTimestamp": "2020-08-05T16:04:12.640Z"
          },
          {
              "Name": "NewsAndUpdates",
              "CreatedTimestamp": "2019-10-03T20:03:34.574Z"
          }
      ]
  }
  ```

  テンプレートをまだ作成していない場合、このコマンドはメンバーのいない`TemplatesMetadata`オブジェクトを返します。

## 特定の E メール テンプレートの内容の表示
<a name="send-personalized-email-manage-templates-get"></a>

SES v2 API オペレーション [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailTemplate.html) を使用して、特定の E メールテンプレートの内容を表示できます。

**E メールテンプレートの内容を表示するには**
+ コマンドラインで以下のコマンドを入力します。

  ```
  aws sesv2 get-email-template --template-name MyTemplate
  ```

  上記のコマンドで、*MyTemplate*を、表示したいテンプレートの名前に置き換えます。

  指定したテンプレート名が SES アカウントに存在するテンプレートと一致する場合、このコマンドは次の例のようなレスポンスを返します。

  ```
  {
      "Template": {
          "TemplateName": "TestMessage",
          "SubjectPart": "Amazon SES Test Message",
          "TextPart": "Hello! This is the text part of the message.",
          "HtmlPart": "<html>\n<body>\n<h2>Hello!</h2>\n<p>This is the HTML part of the message.</p></body>\n</html>"
      }
  }
  ```

  指定したテンプレート名が SES アカウントに存在するテンプレートと一致しない場合、このコマンドは `NotFoundException` エラーを返します。

## E メールテンプレートの削除
<a name="send-personalized-email-manage-templates-delete"></a>

SES v2 API オペレーション [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_DeleteEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_DeleteEmailTemplate.html) を使用して、特定の E メールテンプレートを削除できます。

**E メールテンプレートを削除する**
+ コマンドラインで以下のコマンドを入力します。

  ```
  aws sesv2 delete-email-template --template-name MyTemplate
  ```

  前述のコマンドで、*MyTemplate* を削除するテンプレート名で置き換えます。

  このコマンドは出力を提供しません。[GetTemplate](#send-personalized-email-manage-templates-get) オペレーションを使用して、テンプレートが削除されたことを確認できます。

## E メールテンプレートの更新
<a name="send-personalized-email-manage-templates-update"></a>

SES v2 API オペレーション [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_UpdateEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_UpdateEmailTemplate.html) を使用して、既存の E メールテンプレートを更新できます。たとえば、このオペレーションは、E メールテンプレートの件名を変更する場合や、メッセージの本文を変更する必要がある場合に役立ちます。

**E メールテンプレートを更新する**

1. `GetEmailTemplate` コマンドを使用し、コマンドラインに次のコマンドを入力して、既存のテンプレートを取得できます。

   ```
   aws sesv2 get-email-template --template-name MyTemplate
   ```

   上記のコマンドで、*MyTemplate*を、テンプレートの更新名に置き換えます。

   指定したテンプレート名が SES アカウントに存在するテンプレートと一致する場合、このコマンドは次の例のようなレスポンスを返します。

   ```
   {
       "Template": {
           "TemplateName": "TestMessage",
           "SubjectPart": "Amazon SES Test Message",
           "TextPart": "Hello! This is the text part of the message.",
           "HtmlPart": "<html>\n<body>\n<h2>Hello!</h2>\n<p>This is the HTML part of the message.</p></body>\n</html>"
       }
   }
   ```

1. テキストエディタで新規ファイルを作成します。前のコマンドの出力をファイルに貼り付けます。

1. 必要に応じてテンプレートを変更します。省略した行は、テンプレートから削除されます。たとえば、テンプレートの `SubjectPart` を変更したい場合のみ、`TextPart` および `HtmlPart` のプロパティを含める必要があります。

   終了したら、`update_template.json`としてファイルを保存します。

1. コマンドラインで以下のコマンドを入力します。

   ```
   aws sesv2 update-email-template --cli-input-json file://path/to/update_template.json
   ```

   前述の上記のコマンドで、*path/to/update\$1template.json* を、前のステップで作成した `update_template.json` ファイルのパスに置き換えます。

   テンプレートが正常に更新された場合、このコマンドは出力を提供しません。[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailTemplate.html) オペレーションを使用して、テンプレートが更新されたことを確認できます。

   指定したテンプレートが存在しない場合、このコマンドは `TemplateDoesNotExist` エラーを返します。テンプレートに `TextPart` または `HtmlPart` のプロパティ (またはその両方) が含まれていない場合、このコマンドは `InvalidParameterValue` エラーを返します。