

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utiliser des modèles pour envoyer des e-mails personnalisés à l'aide de l'API Amazon SES
<a name="send-personalized-email-api"></a>

Dans Amazon SES, vous pouvez envoyer un modèle d'e-mail en utilisant un *modèle enregistré* ou en utilisant un modèle *intégré.*
+ **Modèle stocké** : fait référence à la [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html)ressource créée et enregistrée dans SES à l'aide de l'`CreateEmailTemplate`opération de l'API Amazon SES v2. Le modèle contient l'objet et le corps de l'e-mail contenant des variables (espaces réservés) conformes au contenu écrit. Le nom du modèle stocké et les données dynamiques associées aux variables d'espace réservé du modèle sont fournis lors de l'appel des opérations d'API `SendEmail` ou de l'API `SendBulkEmail` v2.

  *Les modèles enregistrés* peuvent être facilement réutilisés et peuvent vous faire économiser du temps et des efforts lors de l'envoi de types d'e-mails similaires. Au lieu de créer chaque e-mail à partir de zéro, il vous suffit de créer la structure de base et le design une seule fois, puis de simplement mettre à jour le contenu dynamique du modèle.
+ **Modèle intégré** — La `Template` ressource n'est pas utilisée, mais l'objet et le corps de l'e-mail contenant des variables (espaces réservés) intégrés au contenu écrit, ainsi que les valeurs de ces variables d'espace réservé, sont fournis lors de l'appel des opérations de l'API `SendEmail` ou `SendBulkEmail` de l'API v2.

  *Les modèles intégrés* rationalisent le processus d'envoi d'e-mails en masse en éliminant le besoin de gérer les ressources des modèles dans votre compte SES et simplifient le processus d'intégration en vous permettant d'inclure le contenu du modèle directement dans la logique de votre application. Ils ne sont pas pris en compte dans la limite de 20 000 modèles par. Région AWS

Les limites suivantes s'appliquent lors de l'utilisation de *modèles enregistrés* :
+ Vous pouvez créer jusqu'à 20 000 modèles d'e-mails dans chacun Région AWS.
+ Chaque modèle peut avoir une taille maximale de 500 Ko, parties texte et HTML incluses.

La limite suivante s'applique lors de l'utilisation de *modèles intégrés* :
+ La taille de chaque fichier JSON d'entrée peut atteindre 1 Mo, y compris les parties texte et HTML.

Ce qui suit s'applique à la fois aux modèles *stockés* et aux *modèles en ligne* :
+ Il n'y a aucune limite quant au nombre de variables de remplacement pouvant être utilisées.
+ Vous pouvez envoyer un e-mail à un maximum de 50 objets de destination lors de chaque appel à l'`SendBulkEmail`opération. L'[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html)objet peut contenir plusieurs destinataires définis dans **ToAddresses**CcAddresses****, et **BccAddresses**. Le nombre de destinations que vous pouvez contacter en un seul appel à l'API v2 peut être limité par le taux d'envoi maximal de votre compte. Pour de plus amples informations, veuillez consulter [Gestion de vos limites d'envoi Amazon SES](manage-sending-quotas.md).

Ce chapitre inclut des procédures avec des exemples d'utilisation à la fois de *modèles stockés* et de *modèles intégrés*.

**Note**  
Les procédures de cette section supposent aussi que vous avez déjà installé et configuré l' AWS CLI. Pour plus d'informations sur l'installation et la configuration du AWS CLI, consultez le [guide de AWS Command Line Interface l'utilisateur](https://docs.aws.amazon.com/cli/latest/userguide/).

## (Facultatif) Partie 1 : Configuration des notifications d'événements d'échec de rendu
<a name="send-personalized-email-set-up-notifications"></a>

 Si vous envoyez un e-mail qui contient un contenu de personnalisation non valide, Amazon SES peut initialement accepter le message, mais ne pourra pas le remettre. C'est pourquoi, si vous envisagez d'envoyer un e-mail personnalisé, vous devez configurer SES pour envoyer des notifications d'échec de rendu via Amazon SNS. Lorsque vous recevez une notification d'événement d'échec d'affichage, vous pouvez identifier le message qui comportait un contenu non valide, corriger les problèmes et renvoyer le message.

La procédure décrite dans cette section est facultative, mais vivement recommandée.

**Pour configurer des notifications d'événement d'échec d'affichage**

1. Créer une rubrique Amazon SNS. Pour obtenir les procédures, veuillez consulter [Création d'une rubrique](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) dans le *Guide du développeur Amazon Simple Notification Service*.

1. Abonnez-vous à la rubrique Amazon SNS. Par exemple, si vous voulez recevoir des notifications d'événement d'échec d'affichage par e-mail, abonnez un point de terminaison de messagerie (votre adresse e-mail) à la rubrique.

   Pour obtenir des procédures, veuillez consulter [Abonnement à une rubrique](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) dans le *Guide du développeur Amazon Simple Notification Service*.

1. Suivez les procédures de [Configurer une destination d'événement Amazon SNS pour la publication d'événements](event-publishing-add-event-destination-sns.md) pour configurer vos jeux de configuration afin de publier des notifications d'événement d'échec d'affichage dans votre rubrique Amazon SNS.

## (Facultatif) Partie 2 : Création d'un modèle d'e-mail
<a name="send-personalized-email-create-template"></a>

Si vous avez l'intention d'utiliser un *modèle stocké*, cette section explique comment utiliser l'opération API [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_CreateEmailTemplate.html)SES v2 pour créer le modèle. Vous pouvez ignorer cette étape si vous souhaitez utiliser un *modèle intégré*.

Cette procédure suppose que vous avez déjà installé et configuré l' AWS CLI. Pour plus d'informations sur l'installation et la configuration du AWS CLI, consultez le [guide de AWS Command Line Interface l'utilisateur](https://docs.aws.amazon.com/cli/latest/userguide/).

**Pour créer le modèle**

1. Dans un éditeur de texte, créez un nouveau fichier et collez le code suivant pour le personnaliser selon vos besoins.

   ```
   {
       "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>"
       }
   }
   ```

   Ce code contient les propriétés suivantes :
   + **TemplateName**— Le nom de la `Template` ressource. Lorsque vous envoyez l'e-mail, vous faites référence à ce nom.
   + **TemplateContent**— Un conteneur pour les attributs suivants :
     + **Objet** : ligne d'objet de l'e-mail. Cette propriété peut contenir des balises de remplacement. Celles-ci utilisent le format suivant : `{{tagname}}`. Lorsque vous envoyez l'e-mail, vous pouvez attribuer une valeur à `tagname` pour chaque destination.
     + **Html** — Le corps HTML de l'e-mail. Cette propriété peut contenir des balises de remplacement. L'exemple précédent contient deux balises : `{{name}}` et `{{favoriteanimal}}`.
     + **Texte** — Le corps du texte de l'e-mail. Les destinataires dont les clients de messagerie n'affichent pas de contenu HTML verront cette version de l'e-mail. Cette propriété peut également contenir des étiquettes de remplacement.

1. Personnalisez l'exemple précédent pour l'adapter à vos besoins, puis enregistrez le fichier sous *mytemplate.json*.

1. Sur la ligne de commande, tapez la commande suivante pour créer un nouveau modèle à l'aide de l'opération d'API [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 :

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

## Partie 3 : Envoi de l'e-mail personnalisé
<a name="send-personalized-email-api-operations"></a>

Vous pouvez utiliser les deux opérations d'API SES v2 suivantes pour envoyer des e-mails à l'aide de *modèles stockés* ou de *modèles intégrés* :
+ L'[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html)opération est utile pour envoyer un e-mail personnalisé à un seul objet de destination. L'[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html)objet API v2 peut contenir les *BccAddresses*propriétés *ToAddresses*CcAddresses**, et. Ils peuvent être utilisés dans n'importe quelle combinaison et peuvent contenir une ou plusieurs adresses e-mail qui recevront le même e-mail.
+ L'[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html)opération est utile pour envoyer des e-mails uniques à plusieurs objets de destination en un seul appel à l'API v2.

Cette section fournit des exemples d'utilisation du modèle AWS CLI d'e-mail à l'aide de ces deux opérations d'envoi.

### Envoi d'un modèle d'e-mail à un seul objet de destination
<a name="send-templated-email-single-destination"></a>

Vous pouvez utiliser cette [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html)opération pour envoyer un e-mail à un ou plusieurs destinataires définis dans un seul objet de destination. Toutes les destinataires de l'objet [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html) recevront le même e-mail.

**Pour envoyer un modèle d'e-mail à un seul objet de destination**

1. Selon que vous souhaitez utiliser un *modèle enregistré ou un modèle* *intégré*, sélectionnez l'exemple de code correspondant à coller dans un éditeur de texte, en le personnalisant selon vos besoins.

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

   Notez que le modèle que vous avez créé à l'*MyTemplate*étape précédente est référencé comme valeur du `TemplateName` paramètre.

   ```
   {
       "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"
   }
   ```

   Ce code contient les propriétés suivantes :
   + **FromEmailAddress**— L'adresse e-mail de l'expéditeur.
   + **Destination** : objet contenant les destinataires des e-mails définis dans les *BccAddresses*propriétés *ToAddresses*CcAddresses**, et. Ils peuvent être utilisés dans n'importe quelle combinaison et peuvent contenir une ou plusieurs adresses e-mail qui recevront le même e-mail.
   + **TemplateName**— Le nom de la `Template` ressource à appliquer à l'e-mail.
   + **TemplateData**— Chaîne JSON échappée contenant des paires clé-valeur. Les clés correspondent aux variables définies dans les `TemplateContent` propriétés du modèle stocké, par exemple`{{name}}`. Les valeurs représentent le contenu qui remplace les variables.
   + **ConfigurationSetName**— Le nom du jeu de configuration à utiliser lors de l'envoi de l'e-mail.
**Note**  
Nous vous recommandons d'utiliser un jeu de configurations qui est configuré pour publier les événements d'échec d'affichage dans Amazon SNS. Pour de plus amples informations, veuillez consulter [(Facultatif) Partie 1 : Configuration des notifications d'événements d'échec de rendu](#send-personalized-email-set-up-notifications).

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

   Notez que les `TemplateContent` propriétés (qui devraient normalement être définies dans un *modèle stocké*) sont définies *en ligne* avec la `TemplateData` propriété qui en fait un modèle *en ligne*.

   ```
   {
       "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"
   }
   ```

   Ce code contient les propriétés suivantes :
   + **FromEmailAddress**— L'adresse e-mail de l'expéditeur.
   + **Destination** : objet contenant les destinataires des e-mails définis dans les *BccAddresses*propriétés *ToAddresses*CcAddresses**, et. Ils peuvent être utilisés dans n'importe quelle combinaison et peuvent contenir une ou plusieurs adresses e-mail qui recevront le même e-mail.
   + **TemplateContent**— Un conteneur pour les attributs suivants :
     + **Objet** : ligne d'objet de l'e-mail. Cette propriété peut contenir des balises de remplacement. Celles-ci utilisent le format suivant : `{{tagname}}`. Lorsque vous envoyez l'e-mail, vous pouvez attribuer une valeur à `tagname` pour chaque destination.
     + **Html** — Le corps HTML de l'e-mail. Cette propriété peut contenir des balises de remplacement. L'exemple précédent contient deux balises : `{{name}}` et `{{favoriteanimal}}`.
     + **Texte** — Le corps du texte de l'e-mail. Les destinataires dont les clients de messagerie n'affichent pas de contenu HTML verront cette version de l'e-mail. Cette propriété peut également contenir des étiquettes de remplacement.
   + **TemplateData**— Chaîne JSON échappée contenant des paires clé-valeur. Les clés correspondent aux variables définies dans les `TemplateContent` propriétés de ce fichier, par exemple`{{name}}`. Les valeurs représentent le contenu qui remplace les variables.
   + **ConfigurationSetName**— Le nom du jeu de configuration à utiliser lors de l'envoi de l'e-mail.
**Note**  
Nous vous recommandons d'utiliser un jeu de configurations qui est configuré pour publier les événements d'échec d'affichage dans Amazon SNS. Pour de plus amples informations, veuillez consulter [(Facultatif) Partie 1 : Configuration des notifications d'événements d'échec de rendu](#send-personalized-email-set-up-notifications).

------

1. Personnalisez l'exemple précédent pour l'adapter à vos besoins, puis enregistrez le fichier sous *myemail.json*.

1. Sur la ligne de commande, tapez la commande API v2 suivante pour envoyer l'e-mail :

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

### Envoi d'un modèle d'e-mail à plusieurs objets de destination
<a name="send-templated-email-multiple-destinations"></a>

Vous pouvez utiliser cette [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html)opération pour envoyer un e-mail à plusieurs objets de destination en un seul appel à l'API SES v2. SES envoie un e-mail unique au ou aux destinataires de chaque [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Destination.html)objet.

**Pour envoyer un modèle d'e-mail à plusieurs objets de destination**

1. Selon que vous souhaitez utiliser un *modèle enregistré ou un modèle* *intégré*, sélectionnez l'exemple de code correspondant à coller dans un éditeur de texte, en le personnalisant selon vos besoins.

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

   Notez que le modèle que vous avez créé à l'*MyTemplate*étape précédente est référencé comme valeur du `TemplateName` paramètre.

   ```
   {
       "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"
   }
   ```

   Ce code contient les propriétés suivantes :
   + **FromEmailAddress**— L'adresse e-mail de l'expéditeur.
   + **DefaultContent**— Un objet JSON contenant les `TemplateData` objets `TemplateName` et. 
   + **TemplateName**— Le nom de la `Template` ressource à appliquer à l'e-mail.
   + **TemplateData**— Contient des paires clé-valeur qui seront utilisées si l'`ReplacementEmailContent`objet contient un objet JSON vide dans la `ReplacementTemplateData` propriété. `{}`
   + **BulkEmailEntries**— Tableau contenant un ou plusieurs `Destination` objets.
   + **Destination** : objet contenant les destinataires des e-mails définis dans les *BccAddresses*propriétés *ToAddresses*CcAddresses**, et. Ils peuvent être utilisés dans n'importe quelle combinaison et peuvent contenir une ou plusieurs adresses e-mail qui recevront le même e-mail.
   + **ReplacementTemplateData**— Chaîne JSON échappée contenant des paires clé-valeur. Les clés correspondent aux variables du modèle, par exemple`{{name}}`. Les valeurs représentent le contenu qui remplace les variables de l'e-mail. (Si la chaîne JSON est vide, indiquée par`{}`, les paires clé-valeur définies dans la `TemplateData` propriété de l'`DefaultContent`objet seront utilisées.)
   + **ConfigurationSetName**— Le nom du jeu de configuration à utiliser lors de l'envoi de l'e-mail.
**Note**  
Nous vous recommandons d'utiliser un jeu de configurations qui est configuré pour publier les événements d'échec d'affichage dans Amazon SNS. Pour de plus amples informations, veuillez consulter [(Facultatif) Partie 1 : Configuration des notifications d'événements d'échec de rendu](#send-personalized-email-set-up-notifications).

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

   Notez que les `TemplateContent` propriétés (qui devraient normalement être définies dans un *modèle stocké*) sont définies *en ligne* avec la `TemplateData` propriété qui en fait un modèle *en ligne*.

   ```
   {
       "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"
   }
   ```

   Ce code contient les propriétés suivantes :
   + **FromEmailAddress**— L'adresse e-mail de l'expéditeur.
   + **DefaultContent**— Un objet JSON contenant les `TemplateData` objets `TemplateContent` et. 
   + **TemplateContent**— Un conteneur pour les attributs suivants :
     + **Objet** : ligne d'objet de l'e-mail. Cette propriété peut contenir des balises de remplacement. Celles-ci utilisent le format suivant : `{{tagname}}`. Lorsque vous envoyez l'e-mail, vous pouvez attribuer une valeur à `tagname` pour chaque destination.
     + **Html** — Le corps HTML de l'e-mail. Cette propriété peut contenir des balises de remplacement. L'exemple précédent contient deux balises : `{{name}}` et `{{favoriteanimal}}`.
     + **Texte** — Le corps du texte de l'e-mail. Les destinataires dont les clients de messagerie n'affichent pas de contenu HTML verront cette version de l'e-mail. Cette propriété peut également contenir des étiquettes de remplacement.
   + **TemplateData**— Contient des paires clé-valeur qui seront utilisées si l'`ReplacementEmailContent`objet contient un objet JSON vide dans la `ReplacementTemplateData` propriété. `{}`
   + **BulkEmailEntries**— Tableau contenant un ou plusieurs `Destination` objets.
   + **Destination** : objet contenant les destinataires des e-mails définis dans les *BccAddresses*propriétés *ToAddresses*CcAddresses**, et. Ils peuvent être utilisés dans n'importe quelle combinaison et peuvent contenir une ou plusieurs adresses e-mail qui recevront le même e-mail.
   + **ReplacementTemplateData**— Chaîne JSON échappée contenant des paires clé-valeur. Les clés correspondent aux variables définies dans les `TemplateContent` propriétés de ce fichier, par exemple`{{name}}`. Les valeurs représentent le contenu qui remplace les variables de l'e-mail. (Si la chaîne JSON est vide, indiquée par`{}`, les paires clé-valeur définies dans la `TemplateData` propriété de l'`DefaultContent`objet seront utilisées.)
   + **ConfigurationSetName**— Le nom du jeu de configuration à utiliser lors de l'envoi de l'e-mail.
**Note**  
Nous vous recommandons d'utiliser un jeu de configurations qui est configuré pour publier les événements d'échec d'affichage dans Amazon SNS. Pour de plus amples informations, veuillez consulter [(Facultatif) Partie 1 : Configuration des notifications d'événements d'échec de rendu](#send-personalized-email-set-up-notifications).

------

1. Modifiez les valeurs dans le code ci-dessus selon vos besoins, puis enregistrez le fichier sous le nom *mybulkemail.json*.

1. Sur la ligne de commande, tapez la commande API v2 suivante pour envoyer l'e-mail en masse :

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

# Personnalisation avancée des e-mails
<a name="send-personalized-email-advanced"></a>

 Si vous utilisez un *modèle stocké*, c'est-à-dire que vous avez créé une [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html)ressource dans Amazon SES à l'aide de l'`CreateEmailTemplate`API SES v2, vous pouvez tirer parti du système Handlebars pour créer des modèles qui incluent des fonctionnalités avancées, telles que des attributs imbriqués, l'itération de tableaux, des instructions conditionnelles de base et la création de partiels intégrés. Cette section fournit des exemples de ces fonctions.

Handlebars inclut d'autres fonctions en plus de celles documentées dans la présente section. Pour plus d'informations, veuillez consulter [Built-In Helpers (Assistants intégrés)](https://handlebarsjs.com/guide/builtin-helpers.html) sur [handlebarsjs.com](http://handlebarsjs.com).

**Note**  
SES n'échappe pas le contenu HTML lors du rendu du modèle HTML d'un message. Cela implique que si vous incluez des données saisies par l'utilisateur, par exemple à partir d'un formulaire de contact, vous devrez les échapper du côté du client.

**Topics**
+ [

## Analyse des attributs imbriqués
](#send-personalized-email-advanced-nested)
+ [

## Itération au moyen de listes
](#send-personalized-email-advanced-iterating)
+ [

## Utilisation des instructions conditionnelles de base
](#send-personalized-email-advanced-conditionals)
+ [

## Création de fichiers partiels en ligne
](#send-personalized-email-advanced-inline-partials)

## Analyse des attributs imbriqués
<a name="send-personalized-email-advanced-nested"></a>

Handlebars inclut la prise en charge des chemins imbriqués, ce qui facilite l'organisation de données client complexes, ainsi que la référence à ces données dans vos modèles d'e-mails.

Par exemple, vous pouvez organiser les données des destinataires en plusieurs catégories générales. Au sein de chacune de ces catégories, vous pouvez inclure des informations détaillées. L'exemple de code suivant illustre un exemple de cette structure pour un seul destinataire :

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

Dans vos modèles d'e-mails, vous pouvez vous référer aux attributs imbriqués en fournissant le nom de l'attribut parent, suivi d'un point (.) et du nom de l'attribut pour lequel vous souhaitez inclure la valeur. Par exemple, si vous utilisez la structure de données de l'exemple précédent et que vous souhaitez inclure le prénom de chaque destinataire dans le modèle d'e-mail, incluez le texte suivant dans votre modèle d'e-mail : `Hello {{contact.firstName}}!`

Handlebars peut analyser les chemins imbriqués à plusieurs niveaux de profondeur, ce qui signifie que vous avez une certaine souplesse quant à la façon de structurer les données de votre modèle.

## Itération au moyen de listes
<a name="send-personalized-email-advanced-iterating"></a>

L'assistant `each` itère sur les éléments d'un tableau. Le code suivant est un exemple de modèle d'e-mail utilisant l'assistant `each` pour créer une liste détaillée des centres d'intérêt de chaque destinataire.

```
{
  "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}}"
  }
}
```

**Important**  
Dans l'exemple de code précédent, les valeurs des attributs `HtmlPart` et `TextPart` comportent des sauts de ligne pour faciliter la lecture de l'exemple. Le fichier JSON de votre modèle ne peut pas contenir de sauts de ligne au sein de ces valeurs. Si vous copiez et collez cet exemple dans votre propre fichier JSON, supprimez les sauts de ligne et les espaces supplémentaires des sections `HtmlPart` et `TextPart` avant de poursuivre.

Une fois le modèle créé, vous pouvez utiliser l'opération `SendEmail` ou `SendBulkEmail` pour envoyer un e-mail aux destinataires à l'aide de ce modèle. Tant que chaque destinataire possède au moins une valeur dans l'objet `Interests`, il reçoit un e-mail incluant la liste détaillée de ses centres d'intérêts. L'exemple suivant illustre un fichier JSON qui peut être utilisé pour envoyer un e-mail à plusieurs destinataires à l'aide du modèle précédent :

```
{
  "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\":[]}"
}
```

Lorsque vous envoyez un e-mail aux destinataires listés dans l'exemple précédent à l'aide de l'opération `SendBulkEmail`, ceux-ci reçoivent un message semblable à l'exemple illustré dans l'image suivante :

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


## Utilisation des instructions conditionnelles de base
<a name="send-personalized-email-advanced-conditionals"></a>

Cette section repose sur l'exemple décrit dans la section précédente. L'exemple de la section précédente utilise l'assistant `each` pour itérer sur une liste de centres d'intérêt. Cependant, les destinataires pour lesquels aucun centre d'intérêt n'est spécifié reçoivent un e-mail avec une liste vide. À l'aide de l'assistant `{{if}}`, vous pouvez formater l'e-mail différemment si un certain attribut est présent dans les données du modèle. Le code suivant utilise l'assistant `{{if}}` pour afficher la liste à puces de la section précédente si le tableau `Subscription` contient des valeurs. Si le tableau est vide, un autre bloc de texte s'affiche.

```
{
  "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}}"
  }
}
```

**Important**  
Dans l'exemple de code précédent, les valeurs des attributs `HtmlPart` et `TextPart` comportent des sauts de ligne pour faciliter la lecture de l'exemple. Le fichier JSON de votre modèle ne peut pas contenir de sauts de ligne au sein de ces valeurs. Si vous copiez et collez cet exemple dans votre propre fichier JSON, supprimez les sauts de ligne et les espaces supplémentaires des sections `HtmlPart` et `TextPart` avant de poursuivre.

L'exemple suivant illustre un fichier JSON qui peut être utilisé pour envoyer un e-mail à plusieurs destinataires à l'aide du modèle précédent :

```
{
  "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\":[]}"
}
```

Dans cet exemple, le destinataire dont les données du modèle incluaient une liste de centres d'intérêt reçoit le même e-mail que l'exemple de la section précédente. Le destinataire dont les données du modèle ne contenaient pas de centre d'intérêt reçoit, néanmoins, un e-mail similaire à l'exemple de l'image suivante :

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


## Création de fichiers partiels en ligne
<a name="send-personalized-email-advanced-inline-partials"></a>

Vous pouvez utiliser les fichiers partiels en ligne pour simplifier les modèles incluant des répétitions de chaîne. Par exemple, il est possible de créer un fichier partiel en ligne incluant le prénom du destinataire et, s'il est disponible, son nom de famille, en ajoutant le code suivant au début de votre modèle :

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

**Note**  
Le caractère de nouvelle ligne (`\n`) est nécessaire pour séparer le bloc `{{inline}}` du contenu de votre modèle. Le caractère de nouvelle ligne n'apparaît pas dans la sortie finale.

Une fois que vous avez créé le fichier partiel `fullName`, vous pouvez l'inclure n'importe où dans votre modèle en faisant précéder son nom du symbole > (supérieur à) suivi d'un espace, comme dans l'exemple suivant : `{{> fullName}}`. Les fichiers partiels en ligne ne sont pas transférés d'une partie à l'autre de l'e-mail. Par exemple, si vous voulez utiliser le même fichier partiel dans la version HTML et la version texte de l'e-mail, vous devez le définir dans les deux sections `HtmlPart` et `TextPart`.

Vous pouvez également utiliser les fichiers partiels en ligne lors de l'itération sur les tableaux. Vous pouvez utiliser le code suivant pour créer un modèle qui recourt au fichier partiel en ligne `fullName`. Dans cet exemple, le fichier partiel en ligne s'applique à la fois au nom du destinataire et à un tableau des autres noms :

```
{
  "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}}"
  }
}
```

**Important**  
Dans l'exemple de code précédent, les valeurs des attributs `HtmlPart` et `TextPart` comportent des sauts de ligne pour faciliter la lecture de l'exemple. Le fichier JSON de votre modèle ne peut pas contenir de sauts de ligne au sein de ces valeurs. Si vous copiez et collez cet exemple dans votre propre fichier JSON, supprimez les sauts de ligne et les espaces supplémentaires de ces sections.

# Gestion des modèles d'e-mail
<a name="send-personalized-email-manage-templates"></a>

Outre la [création de modèles d'e-mail](send-personalized-email-api.md), vous pouvez également utiliser l'API Amazon SES v2 pour mettre à jour ou supprimer des modèles existants, pour répertorier tous vos modèles existants ou pour afficher le contenu d'un modèle. 

Cette section contient les procédures d'utilisation du AWS CLI pour effectuer des tâches liées aux modèles SES.

**Note**  
Les procédures de cette section supposent aussi que vous avez déjà installé et configuré l' AWS CLI. Pour plus d'informations sur l'installation et la configuration du AWS CLI, consultez le [guide de AWS Command Line Interface l'utilisateur](https://docs.aws.amazon.com/cli/latest/userguide/).

## Affichage d'une liste de modèles d'e-mail
<a name="send-personalized-email-manage-templates-list"></a>

Vous pouvez utiliser le fonctionnement de l'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)SES v2 pour afficher la liste de tous vos modèles d'e-mails existants.

**Pour afficher une liste de modèles d'e-mail**
+ Sur la ligne de commande, entrez la commande suivante :

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

  S'il existe des modèles d'e-mail dans votre compte SES dans la région actuelle, cette commande renvoie une réponse semblable à l'exemple suivant :

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

  Si vous n'avez pas créé de modèles, la commande renvoie un objet `TemplatesMetadata` sans membre.

## Affichage du contenu d'un modèle d'e-mail spécifique
<a name="send-personalized-email-manage-templates-get"></a>

Vous pouvez utiliser l'opération 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)SES v2 pour afficher le contenu d'un modèle d'e-mail spécifique.

**Pour afficher le contenu d'un modèle d'e-mail**
+ Sur la ligne de commande, entrez la commande suivante :

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

  Dans la commande précédente, remplacez *MyTemplate* par le nom du modèle que vous souhaitez afficher.

  Si le nom du modèle que vous avez fourni correspond à un modèle existant dans votre compte SES, cette commande renvoie une réponse semblable à l'exemple suivant :

  ```
  {
      "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>"
      }
  }
  ```

  Si le nom du modèle que vous avez fourni ne correspond pas à un modèle existant dans votre compte SES, la commande renvoie une `NotFoundException` erreur.

## Suppression d'un modèle d'e-mail
<a name="send-personalized-email-manage-templates-delete"></a>

Vous pouvez utiliser l'opération 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)SES v2 pour supprimer un modèle d'e-mail spécifique.

**Pour supprimer un modèle d'e-mail**
+ Sur la ligne de commande, entrez la commande suivante :

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

  Dans la commande précédente, remplacez *MyTemplate* par le nom du modèle que vous souhaitez supprimer.

  Cette commande ne fournit aucune sortie. Vous pouvez vérifier que le modèle a été supprimé à l'aide de cette [GetTemplate](#send-personalized-email-manage-templates-get)opération.

## Mise à jour d'un modèle d'e-mail
<a name="send-personalized-email-manage-templates-update"></a>

Vous pouvez utiliser l'opération 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)SES v2 pour mettre à jour un modèle d'e-mail existant. Par exemple, cette opération est utile si vous souhaitez modifier la ligne d'objet du modèle d'e-mail ou si vous devez modifier le corps du message lui-même.

**Pour mettre à jour un modèle d'e-mail**

1. Utilisez la commande `GetEmailTemplate` pour récupérer le modèle existant en entrant la commande suivante sur la ligne de commande :

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

   Dans la commande précédente, remplacez *MyTemplate* par le nom du modèle que vous souhaitez mettre à jour.

   Si le nom du modèle que vous avez fourni correspond à un modèle existant dans votre compte SES, cette commande renvoie une réponse semblable à l'exemple suivant :

   ```
   {
       "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. Dans un éditeur de texte, créez un fichier. Collez la sortie de la commande précédente dans le fichier.

1. Modifiez le modèle selon les besoins. Toutes les lignes que vous omettez sont supprimées du modèle. Par exemple, si vous souhaitez uniquement modifier le `SubjectPart` du modèle, vous devez toujours inclure les propriétés `TextPart` et `HtmlPart`.

   Lorsque vous avez terminé, enregistrez le fichier sous `update_template.json`.

1. Sur la ligne de commande, entrez la commande suivante :

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

   Dans la commande précédente, remplacez *path/to/update\$1template.json* par le chemin du `update_template.json` fichier que vous avez créé à l'étape précédente.

   Si le modèle est mis à jour avec succès, cette commande ne fournit aucune sortie. Vous pouvez vérifier que le modèle a été mis à jour en utilisant cette [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailTemplate.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailTemplate.html)opération.

   Si le modèle que vous avez spécifié n'existe pas, cette commande renvoie une erreur `TemplateDoesNotExist`. Si le modèle ne contient pas la propriété `TextPart` ou `HtmlPart` (ou les deux), cette commande renvoie une erreur `InvalidParameterValue`. 