

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.

# Utilisation de l'API Amazon SES pour envoyer un e-mail
<a name="send-email-api"></a>

Pour envoyer un e-mail de production via Amazon SES, vous pouvez utiliser l'interface protocole SMTP (Simple Mail Transfer Protocol) ou l'API Amazon SES. Pour en savoir plus sur l'interface SMTP, consultez [Utilisation de l'interface SMTP d'Amazon SES pour envoyer des e-mails](send-email-smtp.md). Cette section décrit l'envoi d'e-mails à l'aide de l'API. 

Lorsque vous envoyez un e-mail à l'aide de l'API Amazon SES, vous spécifiez le contenu du message et Amazon SES compose un e-mail MIME pour vous. Vous pouvez également assembler l'e-mail vous-même afin d'avoir un contrôle total sur le contenu du message. Pour de plus amples informations sur l'utilisation de l'API, veuillez consulter la [Référence d'API Amazon Simple Email Service](https://docs.aws.amazon.com/ses/latest/APIReference/). Pour obtenir la liste des points de terminaison URLs pour Régions AWS lesquels Amazon SES est disponible, consultez la section [Points de terminaison et quotas Amazon Simple Email Service](https://docs.aws.amazon.com/general/latest/gr/ses.html) dans le *Références générales AWS*.

Vous pouvez appeler l'API des manières suivantes :
+ **Effectuer des demandes HTTPS directes –** Il s'agit de la méthode la plus avancée, car vous devez manuellement gérer l'authentification et la signature de vos demandes, ainsi que la création des demandes. Pour en savoir plus sur l'API Amazon SES, consultez la page [Welcome (Bienvenue)](https://docs.aws.amazon.com/ses/latest/APIReference-V2/Welcome.html) dans *API v2 Reference (référence API v2)*.
+ **Utilisez un AWS SDK :**AWS SDKs simplifiez l'accès APIs à plusieurs AWS services, notamment Amazon SES. Lorsque vous utilisez un kit SDK, il s'occupe de l'authentification, de la signature des demandes, de la logique de nouvelle tentative, de la gestion des erreurs et d'autres fonctions de bas niveau, afin de vous permettre de vous concentrer sur le développement des applications qui raviront vos clients.
+ **Utiliser une interface de ligne de commande – ** L'[AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est l'outil de ligne de commande pour Amazon SES. Nous proposons également les [AWS outils PowerShell pour](https://aws.amazon.com/powershell/) ceux qui écrivent des scripts dans l' PowerShellenvironnement.

Que vous accédiez à l'API Amazon SES directement ou indirectement par le biais d'un AWS SDK, AWS Command Line Interface ou des AWS outils pour PowerShell, l'API Amazon SES vous permet d'envoyer un e-mail de deux manières différentes, en fonction du degré de contrôle que vous souhaitez avoir sur la composition du message électronique :
+ **Mis en forme – **Amazon SES compose et envoie un e-mail correctement mis en forme. Vous devez uniquement indiquer les adresses d'expédition et de destination, un objet et le corps du message. Amazon SES se charge de tout le reste. Pour plus d'informations, consultez [Envoi d'e-mails formatés à l'aide de l'API Amazon SES](send-email-formatted.md).
+ **Brut – **Vous composez et envoyez manuellement un e-mail, en spécifiant vos propres en-têtes d'e-mail et types MIME. Si vous avez l'habitude de mettre en forme vos e-mails, l'interface brute vous donne plus de contrôle sur la composition de votre message. Pour plus d'informations, consultez [Envoi d'e-mails bruts à l'aide de l'API Amazon SES v2](send-email-raw.md).

**Topics**
+ [Envoi d'e-mails formatés à l'aide de l'API Amazon SES](send-email-formatted.md)
+ [Envoi d'e-mails bruts à l'aide de l'API Amazon SES v2](send-email-raw.md)
+ [Utiliser des modèles pour envoyer des e-mails personnalisés à l'aide de l'API Amazon SES](send-personalized-email-api.md)
+ [Envoi d'e-mails via Amazon SES à l'aide d'un AWS SDK](send-an-email-using-sdk-programmatically.md)
+ [Encodages de contenu pris en charge par Amazon SES](content-encodings.md)

# Envoi d'e-mails formatés à l'aide de l'API Amazon SES
<a name="send-email-formatted"></a>

Vous pouvez envoyer un e-mail formaté en utilisant AWS Management Console ou en appelant l'API Amazon SES directement via une application, ou indirectement via un AWS SDK, le AWS Command Line Interface, ou le. AWS Tools for Windows PowerShell

L'API Amazon SES fournit l'action `SendEmail`, qui vous permet de créer et d'envoyer un e-mail formaté. `SendEmail` nécessite une adresse From :, une adresse To :, un objet de message et un corps de message-texte, HTML ou les deux). Pour plus d'informations, consultez [SendEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendEmail.html)(Référence d'API) ou [SendEmail](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html)(Référence d'API v2).

**Note**  
La chaîne de l'adresse e-mail doit être au format ASCII 7 bits. Si vous souhaitez effectuer un envoi vers ou à partir d'adresses e-mail qui contiennent des caractères Unicode dans la partie domaine de l'adresse, vous devez encoder le domaine à l'aide de Punycode. Pour en savoir plus, consultez [RFC 3492](https://tools.ietf.org/html/rfc3492).

Pour obtenir des exemples sur la façon de composer un message formaté à l'aide de différents langages de programmation, consultez [Exemples de code](send-an-email-using-sdk-programmatically.md#send-an-email-using-sdk-programmatically-examples).

Pour accéder à des astuces sur la manière d'augmenter la vitesse d'envoi des e-mails lorsque vous effectuez plusieurs appels à `SendEmail`, consultez [Accroissement du débit avec Amazon SES](troubleshoot-throughput-problems.md).

# Envoi d'e-mails bruts à l'aide de l'API Amazon SES v2
<a name="send-email-raw"></a>

Vous pouvez utiliser l'`SendEmail`opération Amazon SES API v2 avec le type de contenu spécifié `raw` pour envoyer des messages personnalisés à vos destinataires en utilisant le format d'e-mail brut.

## À propos des champs d'en-tête d'e-mail
<a name="send-email-raw-headers"></a>

Le protocole SMTP (SMTP) spécifie la façon dont les e-mails doivent être envoyés en définissant l'enveloppe et certains paramètres des e-mails, mais il ne s'occupe pas du contenu du message. En revanche, le format IMF ([RFC 5322](https://www.ietf.org/rfc/rfc5322.txt)) définit la manière dont le message sera composé.

Avec la spécification IMF, chaque e-mail est composé d'un en-tête et d'un corps. L'en-tête est composé des métadonnées du message et le corps contient le message lui-même. Pour en savoir plus sur les en-têtes et corps d'e-mail, consultez [Format d'e-mail dans Amazon SES](send-email-concepts-email-format.md).

## Utilisation de la construction de messages MIME de courrier électronique bruts
<a name="send-email-raw-mime"></a>

Le protocole SMTP a été initialement conçu pour envoyer des messages électroniques qui ne comportent que des caractères ASCII 7 bits. Cette spécification rend SMTP insuffisant pour les codages de texte non ASCII (par exemple, en Unicode), les contenus binaires ou les pièces jointes. Le standard MIME (Multipurpose Internet Mail Extensions standard) a été développé pour permettre d'envoyer beaucoup d'autres types de contenus à l'aide de SMTP.

Le standard MIME fonctionne en divisant le corps du message en plusieurs parties, puis en indiquant ce qui doit être fait avec chaque partie. Par exemple, une partie du corps de l'e-mail peut être un texte brut, tandis qu'une autre sera en HTML. En outre, le standard MIME autorise les e-mails à contenir une ou plusieurs pièces jointes. Les destinataires des messages peuvent consulter les pièces jointes depuis leurs clients de messagerie ou ils peuvent enregistrer les pièces jointes.

L'en-tête du message et le contenu sont séparés par une ligne vide. Chaque partie de l'e-mail est séparée par une limite, une chaîne de caractères qui indique le début et la fin de chaque partie.

Le message en plusieurs parties de l'exemple suivant contient un texte et une partie HTML, et une pièce jointe. La pièce jointe doit être placée juste en dessous des [en-têtes de pièce jointe](#send-email-mime-encoding-files) et est le plus souvent encodée en `base64`, comme indiqué dans cet exemple.

```
 1. From: "Sender Name" <sender@example.com>
 2. To: recipient@example.com
 3. Subject: Customer service contact info
 4. Content-Type: multipart/mixed;
 5.     boundary="a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a"
 6. 
 7. --a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a
 8. Content-Type: multipart/alternative;
 9.     boundary="sub_a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a"
10. 
11. --sub_a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a
12. Content-Type: text/plain; charset=iso-8859-1
13. Content-Transfer-Encoding: quoted-printable
14. 
15. Please see the attached file for a list of customers to contact.
16. 
17. --sub_a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a
18. Content-Type: text/html; charset=iso-8859-1
19. Content-Transfer-Encoding: quoted-printable
20. 
21. <html>
22. <head></head>
23. <body>
24. <h1>Hello!</h1>
25. <p>Please see the attached file for a list of customers to contact.</p>
26. </body>
27. </html>
28. 
29. --sub_a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a--
30. 
31. --a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a
32. Content-Type: text/plain; name="customers.txt"
33. Content-Description: customers.txt
34. Content-Disposition: attachment;filename="customers.txt";
35.     creation-date="Sat, 05 Aug 2017 19:35:36 GMT";
36. Content-Transfer-Encoding: base64
37. 
38. SUQsRmlyc3ROYW1lLExhc3ROYW1lLENvdW50cnkKMzQ4LEpvaG4sU3RpbGVzLENhbmFkYQo5MjM4
39. OSxKaWUsTGl1LENoaW5hCjczNCxTaGlybGV5LFJvZHJpZ3VleixVbml0ZWQgU3RhdGVzCjI4OTMs
40. QW5heWEsSXllbmdhcixJbmRpYQ==
41. 
42. --a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a--
```

Le type de contenu pour le message est `multipart/mixed`, ce qui indique que le message est composé de nombreuses parties (dans cet exemple, un corps et une pièce jointe) et que le client destinataire doit gérer chaque partie séparément.

Une deuxième partie qui utilise le type de contenu `multipart/alternative` est imbriquée dans le corps. Ce type de contenu indique que chaque partie contient des versions alternatives du même contenu (dans ce cas, une version texte et une version HTML). Si le client de messagerie du destinataire peut afficher du contenu HTML, il affiche alors la version HTML du corps du message. Si le client de messagerie du destinataire ne peut pas afficher de contenu HTML, il affiche alors la version texte brut du corps du message.

Les deux versions du message contiendront également une pièce jointe (dans ce cas, un petit fichier texte qui contient des noms de client).

Lorsque vous imbriquez une partie MIME au sein d'une autre partie, comme dans cet exemple, la partie imbriquée doit utiliser un paramètre `boundary` distinct du paramètre `boundary` de la partie principale. Ces limites doivent être des chaînes de caractères uniques. Pour définir une limite entre des parties MIME, tapez deux tirets (--) suivis par la chaîne de limite. À la fin d'une partie MIME, placez deux tirets au début et à la fin de la chaîne de limite.

**Note**  
Un message ne peut pas comporter plus de 500 parties MIME.

### Encodage MIME
<a name="send-email-mime-encoding"></a>

Pour maintenir la compatibilité avec des systèmes plus anciens, Amazon SES respecte la restriction ASCII 7 bits de SMTP telle que définie dans [RFC 2821](https://tools.ietf.org/html/rfc2821). Si vous souhaitez envoyer du contenu qui contient des caractères non ASCII, vous devez encoder ces caractères dans un format qui utilise des caractères ASCII 7 bits.

#### Adresses e-mail
<a name="send-email-mime-encoding-addresses"></a>

La chaîne de l'adresse e-mail doit être au format ASCII 7 bits. Si vous souhaitez effectuer un envoi vers ou à partir d'adresses e-mail qui contiennent des caractères Unicode dans la partie domaine de l'adresse, vous devez encoder le domaine à l'aide de Punycode. La syntaxe Punycode n'est pas autorisée dans la partie locale de l'adresse e-mail (c'est-à-dire, la partie qui précède le signe @) ni dans le « nom d'expéditeur convivial ». Si vous souhaitez utiliser des caractères Unicode dans le nom « friendly from », vous devez encoder le nom « friendly from » en utilisant la syntaxe des mots codés MIME, comme décrit dans cette section. Pour en savoir plus sur Punycode, consultez [RFC 3492](http://tools.ietf.org/html/rfc3492).

**Note**  
Cette règle ne s'applique qu'aux adresses e-mail que vous spécifiez dans l'enveloppe de message, non dans les en-têtes de message. Lorsque vous utilisez l'`SendEmail`opération Amazon SES API v2, les adresses que vous spécifiez dans les `Destinations` paramètres `Source` et définissent respectivement l'expéditeur et les destinataires de l'enveloppe.

#### En-têtes d'e-mail
<a name="send-email-mime-encoding-headers"></a>

Pour encoder un message d'en-tête, utilisez la syntaxe encodée MIME. La syntaxe encodée MIME utilise le format suivant :

```
=?charset?encoding?encoded-text?=
```

La valeur de `encoding` peut être `Q` ou `B`. Si la valeur de codage est `Q`, la valeur `encoded-text` doit utiliser l'encodage Q. Si la valeur de codage est `B`, la valeur de `encoded-text` doit utiliser l'encodage base64.

Par exemple, si vous voulez utiliser la chaîne « Як ти поживаєш? » dans la ligne d'objet d'un e-mail, vous pouvez utiliser l'un des encodages suivants :
+ **Encodage Q**

  ```
  =?utf-8?Q?=D0=AF=D0=BA_=D1=82=D0=B8_=D0=BF=D0=BE=D0=B6=D0=B8=D0=B2=D0=B0=D1=94=D1=88=3F?=
  ```
+ **Encodage Base64**

  ```
  =?utf-8?B?0K/QuiDRgtC4INC/0L7QttC40LLQsNGU0Yg/?=
  ```

Pour en savoir plus sur l'encodage Q, consultez [RFC 2047](https://tools.ietf.org/html/rfc2047). Pour en savoir plus sur l'encodage base64, consultez [RFC 2045](https://tools.ietf.org/html/rfc2045).

#### Corps du message
<a name="send-email-mime-encoding-body"></a>

Pour encoder le corps d'un message, vous pouvez utiliser l'encodage des guillemets imprimables ou l'encodage base64. Ensuite, utilisez l'en-tête `Content-Transfer-Encoding` pour indiquer le schéma d'encodage utilisé.

Par exemple, supposons que le corps de votre message contienne le texte suivant : 

१९७२ मे रे टॉमलिंसन ने पहला ई-मेल संदेश भेजा \$1 रे टॉमलिंसन ने ही सर्वप्रथम @ चिन्ह का चयन किया और इन्ही को ईमेल का आविष्कारक माना जाता है

Si vous choisissez d'encoder ce texte en utilisant l'encodage base64, commencez par spécifier l'en-tête suivant :

```
Content-Transfer-Encoding: base64
```

Ensuite, dans la section du corps de l'e-mail, incluez le texte codé en base64 :

```
4KWn4KWv4KWt4KWoIOCkruClhyDgpLDgpYcg4KSf4KWJ4KSu4KSy4KS/4KSC4KS44KSoIOCkqOCl
hyDgpKrgpLngpLLgpL4g4KSILeCkruClh+CksiDgpLjgpILgpKbgpYfgpLYg4KSt4KWH4KSc4KS+
IHwg4KSw4KWHIOCkn+ClieCkruCksuCkv+CkguCkuOCkqCDgpKjgpYcg4KS54KWAIOCkuOCksOCl
jeCkteCkquCljeCksOCkpeCkriBAIOCkmuCkv+CkqOCljeCkuSDgpJXgpL4g4KSa4KSv4KSoIOCk
leCkv+Ckr+CkviDgpJTgpLAg4KSH4KSo4KWN4KS54KWAIOCkleCliyDgpIjgpK7gpYfgpLIg4KSV
4KS+IOCkhuCkteCkv+Ckt+CljeCkleCkvuCksOCklSDgpK7gpL7gpKjgpL4g4KSc4KS+4KSk4KS+
IOCkueCliAo=
```

**Note**  
Dans certains cas, vous pouvez utiliser le `Content-Transfer-Encoding` 8 bits dans les messages que vous envoyez à l'aide d'Amazon SES. Toutefois, si Amazon SES doit apporter de modifications à vos messages (par exemple, lorsque vous utilisez le [suivi des ouvertures et des clics](faqs-metrics.md)), le contenu codé en 8 bits peut ne pas s'afficher correctement quand il arrive dans les boîtes de réception de vos destinataires. Pour cette raison, vous devez toujours encoder le contenu qui n'est pas au format ASCII 7 bits.

#### Attachement de fichiers
<a name="send-email-mime-encoding-files"></a>

Pour attacher un fichier à un e-mail, vous devez encoder la pièce jointe à l'aide de l'encodage base64. Les pièces jointes sont généralement placées dans les parties de message MIME dédiées, qui incluent les en-têtes suivants :
+ **Content-Type** : type de fichier de la pièce jointe. Voici des exemples de déclarations Content-Type MIME courantes :
  + **Fichier en texte brut** : `Content-Type: text/plain; name="sample.txt"`
  + **Document Microsoft Word** : `Content-Type: application/msword; name="document.docx"`
  + **Image JPG** : `Content-Type: image/jpeg; name="photo.jpeg"`
+ **Content-Disposition** : spécifie la façon dont le client de messagerie du destinataire doit gérer le contenu. Pour les pièces jointes, cette valeur est `Content-Disposition: attachment`.
+ **Content-Transfer-Encoding** : schéma ayant été utilisé pour encoder la pièce jointe. Pour les pièces jointes, cette valeur est presque toujours `base64`.
+ **La pièce jointe encodée** : vous devez encoder la pièce jointe proprement dite et l'inclure dans le corps, sous les en-têtes de pièces jointes, comme [indiqué dans l'exemple](#send-email-raw-mime).

Amazon SES accepte la plupart des types de fichiers courants. Pour obtenir une liste des types de fichiers qu'Amazon SES n'accepte pas, reportez-vous à la section [Types de pièces jointes SES non pris en charge](attachments.md#mime-types).

## Envoi d'e-mails bruts à l'aide de l'API Amazon SES v2
<a name="send-email-raw-api"></a>

L'API Amazon SES v2 fournit l'`SendEmail`action, qui vous permet de composer et d'envoyer un e-mail dans le format que vous spécifiez lorsque vous définissez le type de contenu sur simple, brut ou modélisé. Pour une description complète, voir [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html). L'exemple suivant indiquera le type de contenu à utiliser `raw` pour envoyer un message en utilisant le format d'e-mail brut.

**Note**  
Pour accéder à des astuces sur la manière d'augmenter la vitesse d'envoi des e-mails lorsque vous effectuez plusieurs appels à `SendEmail`, consultez [Accroissement du débit avec Amazon SES](troubleshoot-throughput-problems.md).

Le corps du message doit contenir un message brut formaté correctement, avec les champs d'en-tête et le codage de corps de message appropriés. Bien qu'il soit possible de composer le message brut manuellement au sein d'une application, il est nettement plus facile de le faire à l'aide de bibliothèques de messagerie existantes. 

------
#### [ Java ]

L'exemple de code suivant montre comment utiliser la [JavaMail](https://javaee.github.io/javamail/)bibliothèque et [AWS SDK pour Java](https://aws.amazon.com/sdk-for-java)comment composer et envoyer un e-mail brut.

```
  1. package com.amazonaws.samples;
  2. 
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. import java.io.PrintStream;
  6. import java.nio.ByteBuffer;
  7. import java.util.Properties;
  8. 
  9. // JavaMail libraries. Download the JavaMail API 
 10. // from https://javaee.github.io/javamail/
 11. import javax.activation.DataHandler;
 12. import javax.activation.DataSource;
 13. import javax.activation.FileDataSource;
 14. import javax.mail.Message;
 15. import javax.mail.MessagingException;
 16. import javax.mail.Session;
 17. import javax.mail.internet.AddressException;
 18. import javax.mail.internet.InternetAddress;
 19. import javax.mail.internet.MimeBodyPart;
 20. import javax.mail.internet.MimeMessage;
 21. import javax.mail.internet.MimeMultipart;
 22. 
 23. // AWS SDK libraries. Download the AWS SDK pour Java // from https://aws.amazon.com/sdk-for-java
 24. import com.amazonaws.regions.Regions;
 25. import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
 26. import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder;
 27. import com.amazonaws.services.simpleemail.model.RawMessage;
 28. import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
 29. 
 30. public class AmazonSESSample {
 31. 
 32. 	// Replace sender@example.com with your "From" address.
 33. 	// This address must be verified with Amazon SES.
 34. 	private static String SENDER = "Sender Name <sender@example.com>";
 35. 
 36. 	// Replace recipient@example.com with a "To" address. If your account 
 37. 	// is still in the sandbox, this address must be verified.
 38. 	private static String RECIPIENT = "recipient@example.com";
 39. 
 40. 	// Specify a configuration set. If you do not want to use a configuration
 41. 	// set, comment the following variable, and the 
 42. 	// ConfigurationSetName=CONFIGURATION_SET argument below.
 43. 	private static String CONFIGURATION_SET = "ConfigSet";
 44. 
 45. 	// The subject line for the email.
 46. 	private static String SUBJECT = "Customer service contact info";
 47. 
 48. 	// The full path to the file that will be attached to the email.
 49. 	// If you're using Windows, escape backslashes as shown in this variable.
 50. 	private static String ATTACHMENT = "C:\\Users\\sender\\customers-to-contact.xlsx";
 51. 
 52. 	// The email body for recipients with non-HTML email clients.
 53. 	private static String BODY_TEXT = "Hello,\r\n"
 54.                                         + "Please see the attached file for a list "
 55.                                         + "of customers to contact.";
 56. 
 57. 	// The HTML body of the email.
 58. 	private static String BODY_HTML = "<html>"
 59.                                         + "<head></head>"
 60.                                         + "<body>"
 61.                                         + "<h1>Hello!</h1>"
 62.                                         + "<p>Please see the attached file for a "
 63.                                         + "list of customers to contact.</p>"
 64.                                         + "</body>"
 65.                                         + "</html>";
 66. 
 67.     public static void main(String[] args) throws AddressException, MessagingException, IOException {
 68.             	
 69.     	Session session = Session.getDefaultInstance(new Properties());
 70.         
 71.         // Create a new MimeMessage object.
 72.         MimeMessage message = new MimeMessage(session);
 73.         
 74.         // Add subject, from and to lines.
 75.         message.setSubject(SUBJECT, "UTF-8");
 76.         message.setFrom(new InternetAddress(SENDER));
 77.         message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(RECIPIENT));
 78. 
 79.         // Create a multipart/alternative child container.
 80.         MimeMultipart msg_body = new MimeMultipart("alternative");
 81.         
 82.         // Create a wrapper for the HTML and text parts.        
 83.         MimeBodyPart wrap = new MimeBodyPart();
 84.         
 85.         // Define the text part.
 86.         MimeBodyPart textPart = new MimeBodyPart();
 87.         textPart.setContent(BODY_TEXT, "text/plain; charset=UTF-8");
 88.                 
 89.         // Define the HTML part.
 90.         MimeBodyPart htmlPart = new MimeBodyPart();
 91.         htmlPart.setContent(BODY_HTML,"text/html; charset=UTF-8");
 92.                 
 93.         // Add the text and HTML parts to the child container.
 94.         msg_body.addBodyPart(textPart);
 95.         msg_body.addBodyPart(htmlPart);
 96.         
 97.         // Add the child container to the wrapper object.
 98.         wrap.setContent(msg_body);
 99.         
100.         // Create a multipart/mixed parent container.
101.         MimeMultipart msg = new MimeMultipart("mixed");
102.         
103.         // Add the parent container to the message.
104.         message.setContent(msg);
105.         
106.         // Add the multipart/alternative part to the message.
107.         msg.addBodyPart(wrap);
108.         
109.         // Define the attachment
110.         MimeBodyPart att = new MimeBodyPart();
111.         DataSource fds = new FileDataSource(ATTACHMENT);
112.         att.setDataHandler(new DataHandler(fds));
113.         att.setFileName(fds.getName());
114.         
115.         // Add the attachment to the message.
116.         msg.addBodyPart(att);
117. 
118.         // Try to send the email.
119.         try {
120.             System.out.println("Attempting to send an email through Amazon SES "
121.                               +"using the AWS SDK for Java...");
122. 
123.             // Instantiate an Amazon SES client, which will make the service 
124.             // call with the supplied AWS credentials.
125.             AmazonSimpleEmailService client = 
126.                     AmazonSimpleEmailServiceClientBuilder.standard()
127.                     // Replace US_WEST_2 with the AWS Region you're using for
128.                     // Amazon SES.
129.                     .withRegion(Regions.US_WEST_2).build();
130.             
131.             // Print the raw email content on the console
132.             PrintStream out = System.out;
133.             message.writeTo(out);
134. 
135.             // Send the email.
136.             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
137.             message.writeTo(outputStream);
138.             RawMessage rawMessage = 
139.             		new RawMessage(ByteBuffer.wrap(outputStream.toByteArray()));
140. 
141.             SendRawEmailRequest rawEmailRequest = 
142.             		new SendRawEmailRequest(rawMessage)
143.             		    .withConfigurationSetName(CONFIGURATION_SET);
144.             
145.             client.sendRawEmail(rawEmailRequest);
146.             System.out.println("Email sent!");
147.         // Display an error if something goes wrong.
148.         } catch (Exception ex) {
149.           System.out.println("Email Failed");
150.             System.err.println("Error message: " + ex.getMessage());
151.             ex.printStackTrace();
152.         }
153.     }
154. }
```

------
#### [ Python ]

L'exemple de code suivant montre comment utiliser les packages [Python email.mime ](https://docs.python.org/3.8/library/email.mime.html) et le kit [AWS SDK pour Python (Boto)](https://aws.amazon.com/sdk-for-python) pour composer et envoyer un e-mail brut.

```
 1. import json
 2. import boto3
 3. from botocore.exceptions import ClientError
 4. from email.mime.multipart import MIMEMultipart
 5. from email.mime.text import MIMEText
 6. from email.mime.application import MIMEApplication
 7. import os
 8. 
 9. def boto3_rawemailv2():
10.     SENDER = "Sender <sender@example.com>"
11.     RECIPIENT = "recipient@example.com"
12.     CONFIGURATION_SET = "ConfigSet"
13.     AWS_REGION = "us-east-1"
14.     SUBJECT = "Customer service contact info"
15.     ATTACHMENT = "path/to/customers-to-contact.xlsx"
16.     BODY_TEXT = "Hello,\r\nPlease see the attached file for a list of customers to contact."
17. 
18.     # The HTML body of the email.
19.     BODY_HTML = """\
20.     <html>
21.     <head/>
22.     <body>
23.     <h1>Hello!</h1>
24.     <p>Please see the attached file for a list of customers to contact.</p>
25.     </body>
26.     </html>
27.     """
28. 
29.     # The character encoding for the email.
30.     CHARSET = "utf-8"
31.     msg = MIMEMultipart('mixed')
32.     # Add subject, from and to lines.
33.     msg['Subject'] = SUBJECT 
34.     msg['From'] = SENDER 
35.     msg['To'] = RECIPIENT
36.     
37.     # Create a multipart/alternative child container.
38.     msg_body = MIMEMultipart('alternative')
39.     
40.     # Encode the text and HTML content and set the character encoding. This step is
41.     # necessary if you're sending a message with characters outside the ASCII range.
42.     textpart = MIMEText(BODY_TEXT.encode(CHARSET), 'plain', CHARSET)
43.     htmlpart = MIMEText(BODY_HTML.encode(CHARSET), 'html', CHARSET)
44.     
45.     # Add the text and HTML parts to the child container.
46.     msg_body.attach(textpart)
47.     msg_body.attach(htmlpart)
48.     
49.     # Define the attachment part and encode it using MIMEApplication.
50.     att = MIMEApplication(open(ATTACHMENT, 'rb').read())
51.     
52.     # Add a header to tell the email client to treat this part as an attachment,
53.     # and to give the attachment a name.
54.     att.add_header('Content-Disposition','attachment',filename=os.path.basename(ATTACHMENT))
55.     
56.     # Attach the multipart/alternative child container to the multipart/mixed
57.     # parent container.
58.     msg.attach(msg_body)
59.     msg.attach(att)
60. 
61.     #changes start from here
62.     strmsg = str(msg)
63.     body = bytes (strmsg, 'utf-8')
64. 
65. 
66. 
67.     
68.     client = boto3.client('sesv2')
69.     response = client.send_email(
70.     FromEmailAddress=SENDER,
71.     Destination={
72.         'ToAddresses': [RECIPIENT]
73.     },
74.     Content={
75.         'Raw': {
76.             'Data': body
77.         }
78.     }
79.     )
80.     print(response)
81. boto3_rawemailv2 ()
```

------

# 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`. 

# Envoi d'e-mails via Amazon SES à l'aide d'un AWS SDK
<a name="send-an-email-using-sdk-programmatically"></a>

Vous pouvez utiliser un AWS SDK pour envoyer des e-mails via Amazon SES. AWS SDKs sont disponibles pour plusieurs langages de programmation. Pour plus d'informations, veuillez consulter [Outils pour Amazon Web Services](https://aws.amazon.com/tools/#sdk).

## Conditions préalables
<a name="send-an-email-using-sdk-programmatically-prereqs"></a>

Les conditions préalables suivantes doivent être remplies pour compléter l'un des exemples de code de la section suivante :
+ Si vous ne l'avez pas déjà fait, suivez les étapes dans [Configuration d'Amazon Simple Email Service](setting-up.md).
+ **Vérifiez votre adresse e-mail avec Amazon SES** – Avant de pouvoir envoyer un e-mail à l'aide d'Amazon SES, vous devez vérifier que vous êtes propriétaire de l'adresse e-mail de l'expéditeur. Si votre compte est encore dans l'environnement de test (sandbox) Amazon SES, vous devez également vérifier l'adresse e-mail du destinataire. Nous vous recommandons d'utiliser la console Amazon SES pour vérifier les adresses e-mail. Pour de plus amples informations, veuillez consulter [Création d'une identité d'adresse e-mail](creating-identities.md#verify-email-addresses-procedure). 
+ **Obtenez vos AWS informations d'identification** —Vous avez besoin d'un identifiant de clé d' AWS accès et d'une clé d'accès AWS secrète pour accéder à Amazon SES à l'aide d'un SDK. Vous pouvez trouver vos informations d'identification via la page [Informations d'identification de sécurité](https://console.aws.amazon.com/iam/home?#security_credential) de la AWS Management Console. Pour en savoir plus sur les informations d'identification, consultez [Types d'informations d'identification Amazon SES](send-email-concepts-credentials.md).
+ **Création d'un fichier d'informations d'identification partagé** – Pour que l'exemple de code fourni dans cette section fonctionne correctement, vous devez créer un fichier d'informations d'identification partagé. Pour plus d'informations, consultez [Création d'un fichier d'informations d'identification partagé à utiliser lors de l'envoi d'e-mails via Amazon SES à l'aide d'un AWS SDK](create-shared-credentials-file.md).

## Exemples de code
<a name="send-an-email-using-sdk-programmatically-examples"></a>

**Important**  
Dans les didacticiels suivants, vous vous envoyez un e-mail afin de vérifier si vous l'avez reçu. Pour d'autres essais ou pour des tests de charge, utilisez le simulateur de boîte aux lettres Amazon SES. Les e-mails envoyés au simulateur de boîte aux lettres ne sont pas pris en compte dans votre quota d'envoi et vos taux de retours à l'expéditeur et de réclamations. Pour plus d'informations, consultez [Utilisation manuelle du simulateur de boîte aux lettres](send-an-email-from-console.md#send-email-simulator).

**Topics**

------
#### [ .NET ]

La procédure suivante montre comment envoyer un e-mail via Amazon SES à l'aide de [Visual Studio](https://www.visualstudio.com/) et du AWS SDK pour .NET.

Cette solution a été testée en utilisant les éléments suivants :
+ Microsoft Visual Studio Community 2017, version 15.4.0.
+ Microsoft .NET Framework version 4.6.1.
+ Le package AWSSDK .Core (version 3.3.19), installé à l'aide de. NuGet
+ Le AWSSDK. SimpleEmail package (version 3.3.6.1), installé à l'aide de. NuGet

**Avant de commencer, exécutez les tâches suivantes :**
+ **Installation de Visual Studio** —Visual Studio est disponible à l'adresse [https://www.visualstudio.com/](https://www.visualstudio.com/).

**Pour envoyer un e-mail à l'aide du AWS SDK pour .NET**

1. Créez un projet en procédant comme suit :

   1. Démarrez Visual Studio 2015.

   1. Dans le menu **File (Fichier)**, choisissez **New (Nouveau)**, **Project (Projet)**.

   1. Dans la fenêtre **New Project (Nouveau projet)**, dans le panneau de gauche, développez **Installed (Installations)**, puis **Visual C\$1**.

   1. Dans le panneau de droite, choisissez **Console App (.NET Framework)**.

   1. Pour **Name (Nom)**, tapez **AmazonSESSample**, puis choisissez **OK**.

1.  NuGet À utiliser pour inclure les packages Amazon SES dans votre solution en effectuant les étapes suivantes :

   1. Dans le volet **Explorateur de solutions**, cliquez avec le bouton droit sur votre projet, puis sélectionnez **Gérer les NuGet packages**.

   1. Dans l'SESSampleonglet **NuGet: Amazon**, choisissez **Browse**.

   1. Dans la zone de recherche, saisissez **AWSSDK.SimpleEmail**. 

   1. Choisissez le **AWSSDK. SimpleEmail**package, puis choisissez **Installer**.

   1. Dans la fenêtre **Preview Changes (Prévisualiser les modifications)**, choisissez **OK**.

1. Sous l'onglet **Program.cs**, collez le code suivant :

   ```
    1. using Amazon;
    2. using System;
    3. using System.Collections.Generic;
    4. using Amazon.SimpleEmail;
    5. using Amazon.SimpleEmail.Model;
    6. 
    7. namespace AmazonSESSample 
    8. {
    9.     class Program
   10.     {
   11.         // Replace sender@example.com with your "From" address.
   12.         // This address must be verified with Amazon SES.
   13.         static readonly string senderAddress = "sender@example.com";
   14. 
   15.         // Replace recipient@example.com with a "To" address. If your account
   16.         // is still in the sandbox, this address must be verified.
   17.         static readonly string receiverAddress = "recipient@example.com";
   18. 
   19.         // The configuration set to use for this email. If you do not want to use a
   20.         // configuration set, comment out the following property and the
   21.         // ConfigurationSetName = configSet argument below. 
   22.         static readonly string configSet = "ConfigSet";
   23. 
   24.         // The subject line for the email.
   25.         static readonly string subject = "Amazon SES test (AWS SDK pour .NET)";
   26. 
   27.         // The email body for recipients with non-HTML email clients.
   28.         static readonly string textBody = "Amazon SES Test (.NET)\r\n" 
   29.                                         + "This email was sent through Amazon SES "
   30.                                         + "using the AWS SDK pour .NET.";
   31.         
   32.         // The HTML body of the email.
   33.         static readonly string htmlBody = @"<html>
   34. <head></head>
   35. <body>
   36.   <h1>Amazon SES Test (SDK pour .NET)</h1>
   37.   <p>This email was sent with
   38.     <a href='https://aws.amazon.com/ses/'>Amazon SES</a> using the
   39.     <a href='https://aws.amazon.com/sdk-for-net/'> AWS SDK pour .NET</a>.</p>
   40. </body>
   41. </html>";
   42. 
   43.         static void Main(string[] args)
   44.         {
   45.             // Replace USWest2 with the AWS Region you're using for Amazon SES.
   46.             // Acceptable values are EUWest1, USEast1, and USWest2.
   47.             using (var client = new AmazonSimpleEmailServiceClient(RegionEndpoint.USWest2))
   48.             {
   49.                 var sendRequest = new SendEmailRequest
   50.                 {
   51.                     Source = senderAddress,
   52.                     Destination = new Destination
   53.                     {
   54.                         ToAddresses =
   55.                         new List<string> { receiverAddress }
   56.                     },
   57.                     Message = new Message
   58.                     {
   59.                         Subject = new Content(subject),
   60.                         Body = new Body
   61.                         {
   62.                             Html = new Content
   63.                             {
   64.                                 Charset = "UTF-8",
   65.                                 Data = htmlBody
   66.                             },
   67.                             Text = new Content
   68.                             {
   69.                                 Charset = "UTF-8",
   70.                                 Data = textBody
   71.                             }
   72.                         }
   73.                     },
   74.                     // If you are not using a configuration set, comment
   75.                     // or remove the following line 
   76.                     ConfigurationSetName = configSet
   77.                 };
   78.                 try
   79.                 {
   80.                     Console.WriteLine("Sending email using Amazon SES...");
   81.                     var response = client.SendEmail(sendRequest);
   82.                     Console.WriteLine("The email was sent successfully.");
   83.                 }
   84.                 catch (Exception ex)
   85.                 {
   86.                     Console.WriteLine("The email was not sent.");
   87.                     Console.WriteLine("Error message: " + ex.Message);
   88. 
   89.                 }
   90.             }
   91. 
   92.             Console.Write("Press any key to continue...");
   93.             Console.ReadKey();
   94.         }
   95.     }
   96. }
   ```

1. Dans l'éditeur de code, procédez comme suit :
   + Remplacez *sender@example.com* par l'adresse e-mail « De : ». Cette adresse doit être vérifiée. Pour de plus amples informations, veuillez consulter [Identités vérifiées dans Amazon SES](verify-addresses-and-domains.md).
   + Remplacez *recipient@example.com* par l'adresse « À : ». Si votre compte est encore dans l'environnement de test (sandbox), cette adresse doit également être vérifiée.
   + Remplacez *ConfigSet* par le nom du jeu de configuration à utiliser lors de l'envoi de cet e-mail.
   + *USWest2*Remplacez-le par le nom du Région AWS point de terminaison que vous utilisez pour envoyer des e-mails via Amazon SES. Pour connaître la liste des régions dans lesquelles Amazon SES est disponible, consultez [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region) dans le document *Références générales AWS*.

   Lorsque vous avez terminé, enregistrez `Program.cs`.

1. Concevez et exécutez l'application en effectuant les étapes suivantes :

   1. Dans le menu **Build (Créer)**, choisissez **Build Solution (Créer une solution)**.

   1. Dans le menu **Débogage**, choisissez **Démarrer le débogage**. Une fenêtre de la console s'affiche.

1. Vérifiez la sortie de la console. Si l'envoi de l'e-mail aboutit, la console affiche « `The email was sent successfully.` » 

1. Si l'e-mail a été envoyé avec succès, connectez-vous au client de messagerie de l'adresse du destinataire. Vous verrez le message que vous avez envoyé.

------
#### [ Java ]

La procédure suivante explique comment utiliser l'[IDE Eclipse pour les développeurs Java EE](http://www.eclipse.org/), [AWS Toolkit for Eclipse](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/welcome.html)créer un projet AWS SDK et modifier le code Java pour envoyer un e-mail via Amazon SES. 

**Avant de commencer, exécutez les tâches suivantes :**
+ **Installer Eclipse** – Eclipse est disponible à l'adresse [https://www.eclipse.org/downloads](https://www.eclipse.org/downloads). Le code présenté dans ce didacticiel a été testé avec Eclipse Neon.3 (version 4.6.3) et la version 1.8 de l'environnement d'exécution Java.
+ **Installez le AWS Toolkit for Eclipse—Les** instructions pour ajouter le AWS Toolkit for Eclipse à votre installation Eclipse sont disponibles sur [https://aws.amazon.com/eclipse](https://aws.amazon.com/eclipse). Le code inclus dans ce didacticiel a été testé avec la version 2.3.1 du kit AWS Toolkit for Eclipse.

**Pour envoyer un e-mail à l'aide du AWS SDK pour Java**

1. Créez un projet AWS Java dans Eclipse en effectuant les étapes suivantes :

   1. Démarrez Eclipse.

   1. Dans le menu **File (Fichier)**, sélectionnez **New (Nouveau)**, puis **Other (Autre)**. Dans la fenêtre **New (Nouveau)**, développez le dossier **AWS**, puis choisissez **AWS Java Project (Projet Java AWS )**.

   1. Dans la boîte de dialogue **Nouveau projet AWS Java**, procédez comme suit :

      1. Pour **Project name (Nom du projet)**, tapez un nom de projet.

      1. Sous **AWS SDK pour Java Exemples**, sélectionnez **Amazon Simple Email Service JavaMail Sample**.

      1. Choisissez **Finish (Terminer)**.

1. Dans le panneau **Package Explorer (Explorateur de paquets)** d'Eclipse, développez votre projet.

1. Sous votre projet, développez le dossier `src/main/java`, développez le dossier `com.amazon.aws.samples`, puis cliquez deux fois sur `AmazonSESSample.java`.

1. Remplacez la totalité du contenu de `AmazonSESSample.java` par le code suivant :

   ```
    1. package com.amazonaws.samples;
    2. 
    3. import java.io.IOException;
    4. 
    5. import com.amazonaws.regions.Regions;
    6. import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
    7. import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder;
    8. import com.amazonaws.services.simpleemail.model.Body;
    9. import com.amazonaws.services.simpleemail.model.Content;
   10. import com.amazonaws.services.simpleemail.model.Destination;
   11. import com.amazonaws.services.simpleemail.model.Message;
   12. import com.amazonaws.services.simpleemail.model.SendEmailRequest; 
   13. 
   14. public class AmazonSESSample {
   15. 
   16.   // Replace sender@example.com with your "From" address.
   17.   // This address must be verified with Amazon SES.
   18.   static final String FROM = "sender@example.com";
   19. 
   20.   // Replace recipient@example.com with a "To" address. If your account
   21.   // is still in the sandbox, this address must be verified.
   22.   static final String TO = "recipient@example.com";
   23. 
   24.   // The configuration set to use for this email. If you do not want to use a
   25.   // configuration set, comment the following variable and the 
   26.   // .withConfigurationSetName(CONFIGSET); argument below.
   27.   static final String CONFIGSET = "ConfigSet";
   28. 
   29.   // The subject line for the email.
   30.   static final String SUBJECT = "Amazon SES test (AWS SDK pour Java)";
   31.   
   32.   // The HTML body for the email.
   33.   static final String HTMLBODY = "<h1>Amazon SES test (AWS SDK pour Java)</h1>"
   34.       + "<p>This email was sent with <a href='https://aws.amazon.com/ses/'>"
   35.       + "Amazon SES</a> using the <a href='https://aws.amazon.com/sdk-for-java/'>" 
   36.       + "AWS SDK for Java</a>";
   37. 
   38.   // The email body for recipients with non-HTML email clients.
   39.   static final String TEXTBODY = "This email was sent through Amazon SES "
   40.       + "using the AWS SDK pour Java.";
   41. 
   42.   public static void main(String[] args) throws IOException {
   43. 
   44.     try {
   45.       AmazonSimpleEmailService client = 
   46.           AmazonSimpleEmailServiceClientBuilder.standard()
   47.           // Replace US_WEST_2 with the AWS Region you're using for
   48.           // Amazon SES.
   49.             .withRegion(Regions.US_WEST_2).build();
   50.       SendEmailRequest request = new SendEmailRequest()
   51.           .withDestination(
   52.               new Destination().withToAddresses(TO))
   53.           .withMessage(new Message()
   54.               .withBody(new Body()
   55.                   .withHtml(new Content()
   56.                       .withCharset("UTF-8").withData(HTMLBODY))
   57.                   .withText(new Content()
   58.                       .withCharset("UTF-8").withData(TEXTBODY)))
   59.               .withSubject(new Content()
   60.                   .withCharset("UTF-8").withData(SUBJECT)))
   61.           .withSource(FROM)
   62.           // Comment or remove the next line if you are not using a
   63.           // configuration set
   64.           .withConfigurationSetName(CONFIGSET);
   65.       client.sendEmail(request);
   66.       System.out.println("Email sent!");
   67.     } catch (Exception ex) {
   68.       System.out.println("The email was not sent. Error message: " 
   69.           + ex.getMessage());
   70.     }
   71.   }
   72. }
   ```

1. Dans `AmazonSESSample.java`, remplacez les éléments suivants par vos propres valeurs :
**Important**  
Les adresses e-mail sont sensibles à la casse. Assurez-vous que les adresses sont exactement les mêmes que celles que vous avez vérifiées.
   + `SENDER@EXAMPLE.COM` – Remplacez par votre adresse e-mail « From ». Vous devez vérifier cette adresse avant d'exécuter ce programme. Pour plus d'informations, consultez [Identités vérifiées dans Amazon SES](verify-addresses-and-domains.md).
   + `RECIPIENT@EXAMPLE.COM` – Remplacez par votre adresse e-mail « To ». Si votre compte est encore dans l'environnement de test (sandbox), vous devez vérifier cette adresse avant de l'utiliser. Pour plus d'informations, consultez [Demande d'accès à la production (sortie du sandbox d'Amazon SES)](request-production-access.md).
   + **(Facultatif) `us-west-2`** – Si vous souhaitez utiliser Amazon SES dans une région autre que USA Ouest (Oregon), remplacez ceci par la région que vous souhaitez utiliser. Pour connaître la liste des régions dans lesquelles Amazon SES est disponible, consultez [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region) dans le document *Références générales AWS*.

1. Enregistrez `AmazonSESSample.java`.

1. Pour créer le projet, choisissez **Project (Projet)**, puis **Build Project (Créer un projet)**.
**Note**  
Si cette option est désactivée, la génération automatique est peut-être activée. Dans ce cas, ignorez cette étape.

1. Pour démarrer le programme et envoyer l'e-mail, choisissez **Run (Exécuter)**, puis à nouveau **Run (Exécuter)**.

1. Vérifiez la sortie du panneau de la console dans Eclipse. Si l'envoi de l'e-mail aboutit, la console affiche «`Email sent!`». Dans le cas contraire, elle affiche un message d'erreur.

1. Si l'e-mail a été envoyé avec succès, connectez-vous au client de messagerie de l'adresse du destinataire. Vous verrez le message que vous avez envoyé.

------
#### [ PHP ]

Cette rubrique montre comment utiliser [AWS SDK pour PHP](https://aws.amazon.com/sdk-for-php/) pour envoyer un e-mail via Amazon SES. 

**Avant de commencer, exécutez les tâches suivantes :**
+ **Installer PHP** – PHP est disponible à l'adresse [http://php.net/downloads.php](http://php.net/downloads.php). Ce didacticiel nécessite PHP version 5.5 ou ultérieure. Après avoir installé PHP, ajoutez le chemin d'accès à PHP dans vos variables d'environnement afin de pouvoir exécuter PHP à partir de n'importe quelle invite de commande. Le code inclus dans ce didacticiel a été testé avec PHP 7.2.7.
+ **Installez la AWS SDK pour PHP version 3** —Pour les instructions de téléchargement et d'installation, consultez la [AWS SDK pour PHP documentation](https://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html). Le code inclus dans ce didacticiel a été testé avec la version 3.64.13 du kit SDK. 

**Pour envoyer un e-mail via Amazon SES à l'aide du AWS SDK pour PHP**

1. Dans un éditeur de texte, créez un fichier nommé `amazon-ses-sample.php`. Collez le code suivant :

   ```
    1. <?php
    2. 
    3. // If necessary, modify the path in the require statement below to refer to the 
    4. // location of your Composer autoload.php file.
    5. require 'vendor/autoload.php';
    6. 
    7. use Aws\Ses\SesClient;
    8. use Aws\Exception\AwsException;
    9. 
   10. // Create an SesClient. Change the value of the region parameter if you're 
   11. // using an AWS Region other than US West (Oregon). Change the value of the
   12. // profile parameter if you want to use a profile in your credentials file
   13. // other than the default.
   14. $SesClient = new SesClient([
   15.     'profile' => 'default',
   16.     'version' => '2010-12-01',
   17.     'region'  => 'us-west-2'
   18. ]);
   19. 
   20. // Replace sender@example.com with your "From" address.
   21. // This address must be verified with Amazon SES.
   22. $sender_email = 'sender@example.com';
   23. 
   24. // Replace these sample addresses with the addresses of your recipients. If
   25. // your account is still in the sandbox, these addresses must be verified.
   26. $recipient_emails = ['recipient1@example.com','recipient2@example.com'];
   27. 
   28. // Specify a configuration set. If you do not want to use a configuration
   29. // set, comment the following variable, and the
   30. // 'ConfigurationSetName' => $configuration_set argument below.
   31. $configuration_set = 'ConfigSet';
   32. 
   33. $subject = 'Amazon SES test (AWS SDK pour PHP)';
   34. $plaintext_body = 'This email was sent with Amazon SES using the AWS SDK for PHP.' ;
   35. $html_body =  '<h1>AWS Amazon Simple Email Service Test Email</h1>'.
   36.               '<p>This email was sent with <a href="https://aws.amazon.com/ses/">'.
   37.               'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">'.
   38.               'AWS SDK pour PHP</a>.</p>';
   39. $char_set = 'UTF-8';
   40. 
   41. try {
   42.     $result = $SesClient->sendEmail([
   43.         'Destination' => [
   44.             'ToAddresses' => $recipient_emails,
   45.         ],
   46.         'ReplyToAddresses' => [$sender_email],
   47.         'Source' => $sender_email,
   48.         'Message' => [
   49.           'Body' => [
   50.               'Html' => [
   51.                   'Charset' => $char_set,
   52.                   'Data' => $html_body,
   53.               ],
   54.               'Text' => [
   55.                   'Charset' => $char_set,
   56.                   'Data' => $plaintext_body,
   57.               ],
   58.           ],
   59.           'Subject' => [
   60.               'Charset' => $char_set,
   61.               'Data' => $subject,
   62.           ],
   63.         ],
   64.         // If you aren't using a configuration set, comment or delete the
   65.         // following line
   66.         'ConfigurationSetName' => $configuration_set,
   67.     ]);
   68.     $messageId = $result['MessageId'];
   69.     echo("Email sent! Message ID: $messageId"."\n");
   70. } catch (AwsException $e) {
   71.     // output error message if fails
   72.     echo $e->getMessage();
   73.     echo("The email was not sent. Error message: ".$e->getAwsErrorMessage()."\n");
   74.     echo "\n";
   75. }
   ```

1. Dans `amazon-ses-sample.php`, remplacez les éléments suivants par vos propres valeurs :
   + **`path_to_sdk_inclusion`**—Remplacez par le chemin requis pour l'inclure AWS SDK pour PHP dans le programme. Pour en savoir plus, consultez la [documentation AWS SDK pour PHP](https://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/basic-usage.html). 
   + **`sender@example.com`** – Remplacez par une adresse e-mail que vous avez vérifiée avec Amazon SES. Pour plus d'informations, consultez [Identités vérifiées](verify-addresses-and-domains.md). Les adresses e-mail d'Amazon SES sont sensibles à la casse. Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.
   + **`recipient1@example.com`, `recipient2@example.com`** – Remplacez par les adresses des destinataires. Si votre compte est encore dans l'environnement de test (sandbox), les adresses de destination doivent également être vérifiées. Pour plus d'informations, consultez [Demande d'accès à la production (sortie du sandbox d'Amazon SES)](request-production-access.md). Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.
   + **(Facultatif) `ConfigSet`**– Si vous souhaitez utiliser un jeu de configurations lors de l'envoi de cet e-mail, remplacez cette valeur par le nom du jeu de configurations. Pour en savoir plus sur les jeux de configuration, consultez [Utilisation des jeux de configuration dans Amazon SES](using-configuration-sets.md).
   + **(Facultatif) `us-west-2`** — Si vous souhaitez utiliser Amazon SES dans une région autre que USA Ouest (Oregon), remplacez ceci par la région que vous souhaitez utiliser. Pour connaître la liste des régions dans lesquelles Amazon SES est disponible, consultez [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region) dans le document *Références générales AWS*.

1. Enregistrez `amazon-ses-sample.php`.

1. Pour exécuter le programme, ouvrez une invite de commande dans le même répertoire que `amazon-ses-sample.php`, puis entrez la commande suivante :

   ```
   $ php amazon-ses-sample.php
   ```

1. Vérifiez la sortie. Si l'envoi de l'e-mail aboutit, la console affiche «`Email sent!`». Dans le cas contraire, elle affiche un message d'erreur.
**Note**  
Si une erreur « cURL error 60: SSL certificate problem » se produit lorsque vous exécutez le programme, téléchargez la dernière solution groupée d'autorité de certification (CA), comme décrit dans la [documentation AWS SDK pour PHP](https://docs.aws.amazon.com/aws-sdk-php/v3/guide/faq.html#what-do-i-do-about-a-curl-ssl-certificate-error). Ensuite, dans `amazon-ses-sample.php`, ajoutez les lignes suivantes dans le tableau `SesClient::factory`, remplacez `path_of_certs` par le chemin d'accès à la solution groupée d'autorité de certification (CA) téléchargé, et exécutez à nouveau le programme.  

   ```
   1. 'http' => [
   2.    'verify' => 'path_of_certs\ca-bundle.crt'
   3. ]
   ```

1. Connectez-vous au client de messagerie de l'adresse du destinataire. Vous verrez le message que vous avez envoyé.

------
#### [ Ruby ]

Cette rubrique montre comment utiliser [AWS SDK pour Ruby](https://aws.amazon.com/sdk-for-ruby/) pour envoyer un e-mail via Amazon SES. 

**Avant de commencer, exécutez les tâches suivantes :**
+ **Installer Ruby** —Ruby est disponible sur [https://www.ruby-lang. org/en/downloads](https://www.ruby-lang.org/en/downloads/)/. Le code inclus dans ce didacticiel a été testé avec Ruby 1.9.3. Après avoir installé Ruby, ajoutez le chemin d'accès à Ruby dans vos variables d'environnement afin de pouvoir exécuter Ruby à partir de n'importe quelle invite de commande.
+ **Installez le AWS SDK pour Ruby** —Pour obtenir des instructions de téléchargement et d'installation, consultez la section [Installation du AWS SDK pour Ruby](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/setup-install.html) dans le *guide du AWS SDK pour Ruby développeur*. L'exemple de code inclus dans ce didacticiel a été testé avec la version 2.9.36 du kit AWS SDK pour Ruby.
+ **Création d'un fichier d'informations d'identification partagé** – Pour que l'exemple de code fourni dans cette section fonctionne correctement, vous devez créer un fichier d'informations d'identification partagé. Pour de plus amples informations, veuillez consulter [Création d'un fichier d'informations d'identification partagé à utiliser lors de l'envoi d'e-mails via Amazon SES à l'aide d'un AWS SDK](create-shared-credentials-file.md).

**Pour envoyer un e-mail via Amazon SES à l'aide du AWS SDK pour Ruby**

1. Dans un éditeur de texte, créez un fichier nommé `amazon-ses-sample.rb`. Collez le code suivant dans le fichier :

   ```
    1. require 'aws-sdk'
    2. 
    3. # Replace sender@example.com with your "From" address.
    4. # This address must be verified with Amazon SES.
    5. sender = "sender@example.com"
    6. 
    7. # Replace recipient@example.com with a "To" address. If your account 
    8. # is still in the sandbox, this address must be verified.
    9. recipient = "recipient@example.com"
   10. 
   11. # Specify a configuration set. If you do not want to use a configuration
   12. # set, comment the following variable and the 
   13. # configuration_set_name: configsetname argument below. 
   14. configsetname = "ConfigSet"
   15.   
   16. # Replace us-west-2 with the AWS Region you're using for Amazon SES.
   17. awsregion = "us-west-2"
   18. 
   19. # The subject line for the email.
   20. subject = "Amazon SES test (AWS SDK pour Ruby)"
   21. 
   22. # The HTML body of the email.
   23. htmlbody =
   24.   '<h1>Amazon SES test (AWS SDK pour Ruby)</h1>'\
   25.   '<p>This email was sent with <a href="https://aws.amazon.com/ses/">'\
   26.   'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-ruby/">'\
   27.   'AWS SDK pour Ruby</a>.'
   28. 
   29. # The email body for recipients with non-HTML email clients.  
   30. textbody = "This email was sent with Amazon SES using the AWS SDK pour Ruby."
   31. 
   32. # Specify the text encoding scheme.
   33. encoding = "UTF-8"
   34. 
   35. # Create a new SES resource and specify a region
   36. ses = Aws::SES::Client.new(region: awsregion)
   37. 
   38. # Try to send the email.
   39. begin
   40. 
   41.   # Provide the contents of the email.
   42.   resp = ses.send_email({
   43.     destination: {
   44.       to_addresses: [
   45.         recipient,
   46.       ],
   47.     },
   48.     message: {
   49.       body: {
   50.         html: {
   51.           charset: encoding,
   52.           data: htmlbody,
   53.         },
   54.         text: {
   55.           charset: encoding,
   56.           data: textbody,
   57.         },
   58.       },
   59.       subject: {
   60.         charset: encoding,
   61.         data: subject,
   62.       },
   63.     },
   64.   source: sender,
   65.   # Comment or remove the following line if you are not using 
   66.   # a configuration set
   67.   configuration_set_name: configsetname,
   68.   })
   69.   puts "Email sent!"
   70. 
   71. # If something goes wrong, display an error message.
   72. rescue Aws::SES::Errors::ServiceError => error
   73.   puts "Email not sent. Error message: #{error}"
   74. 
   75. end
   ```

1. Dans `amazon-ses-sample.rb`, remplacez les éléments suivants par vos propres valeurs :
   + **`sender@example.com`** – Remplacez par une adresse e-mail que vous avez vérifiée avec Amazon SES. Pour plus d'informations, consultez [Identités vérifiées](verify-addresses-and-domains.md). Les adresses e-mail d'Amazon SES sont sensibles à la casse. Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.
   + **`recipient@example.com`**—Remplacez par l'adresse du destinataire. Si votre compte est encore dans l'environnement de test (sandbox), vous devez vérifier cette adresse avant de l'utiliser. Pour plus d'informations, consultez [Demande d'accès à la production (sortie du sandbox d'Amazon SES)](request-production-access.md). Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.
   + **(Facultatif) `us-west-2`** — Si vous souhaitez utiliser Amazon SES dans une région autre que USA Ouest (Oregon), remplacez ceci par la région que vous souhaitez utiliser. Pour connaître la liste des régions dans lesquelles Amazon SES est disponible, consultez [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region) dans le document *Références générales AWS*.

1. Enregistrez `amazon-ses-sample.rb`.

1. Pour exécuter le programme, ouvrez une invite de commande dans le même répertoire que `amazon-ses-sample.rb`, puis entrez **ruby amazon-ses-sample.rb**

1. Vérifiez la sortie. Si l'envoi de l'e-mail aboutit, la console affiche «`Email sent!`». Dans le cas contraire, elle affiche un message d'erreur.

1. Connectez-vous au client de messagerie de l'adresse du destinataire. Vous trouverez le message que vous avez envoyé.

------
#### [ Python ]

Cette rubrique montre comment utiliser [AWS SDK pour Python (Boto)](https://aws.amazon.com/sdk-for-python/) pour envoyer un e-mail via Amazon SES. 

**Avant de commencer, exécutez les tâches suivantes :**
+ **Vérifiez votre adresse e-mail avec Amazon SES** – Avant de pouvoir envoyer un e-mail à l'aide d'Amazon SES, vous devez vérifier que vous êtes propriétaire de l'adresse e-mail de l'expéditeur. Si votre compte est encore dans l'environnement de test (sandbox) Amazon SES, vous devez également vérifier l'adresse e-mail du destinataire. Nous vous recommandons d'utiliser la console Amazon SES pour vérifier les adresses e-mail. Pour de plus amples informations, veuillez consulter [Création d'une identité d'adresse e-mail](creating-identities.md#verify-email-addresses-procedure). 
+ **Obtenez vos AWS informations d'identification** —Vous avez besoin d'un identifiant de clé d' AWS accès et d'une clé d'accès AWS secrète pour accéder à Amazon SES à l'aide d'un SDK. Vous pouvez trouver vos informations d'identification via la page [Informations d'identification de sécurité](https://console.aws.amazon.com/iam/home?#security_credential) de la AWS Management Console. Pour en savoir plus sur les informations d'identification, consultez [Types d'informations d'identification Amazon SES](send-email-concepts-credentials.md).
+ **Installer Python —Python** est disponible sur [https://www.python.org/downloads/](https://www.python.org/downloads/). Le code inclus dans ce didacticiel a été testé avec Python 2.7.6 et Python 3.6.1. Après avoir installé Python, ajoutez le chemin d'accès à Python dans vos variables d'environnement afin de pouvoir exécuter Python à partir de n'importe quelle invite de commande.
+ **Installez le AWS SDK pour Python (Boto)** —Pour obtenir des instructions de téléchargement et d'installation, consultez la [AWS SDK pour Python (Boto) documentation](https://boto3.readthedocs.io/en/latest/guide/quickstart.html#installation). L'exemple de code inclus dans ce didacticiel a été testé avec la version 1.4.4 du kit SDK pour Python.

**Pour envoyer un e-mail via Amazon SES à l'aide du kit SDK pour Python**

1. Dans un éditeur de texte, créez un fichier nommé `amazon-ses-sample.py`. Collez le code suivant dans le fichier :

   ```
    1. import boto3
    2. from botocore.exceptions import ClientError
    3. 
    4. # Replace sender@example.com with your "From" address.
    5. # This address must be verified with Amazon SES.
    6. SENDER = "Sender Name <sender@example.com>"
    7. 
    8. # Replace recipient@example.com with a "To" address. If your account 
    9. # is still in the sandbox, this address must be verified.
   10. RECIPIENT = "recipient@example.com"
   11. 
   12. # Specify a configuration set. If you do not want to use a configuration
   13. # set, comment the following variable, and the 
   14. # ConfigurationSetName=CONFIGURATION_SET argument below.
   15. CONFIGURATION_SET = "ConfigSet"
   16. 
   17. # If necessary, replace us-west-2 with the AWS Region you're using for Amazon SES.
   18. AWS_REGION = "us-west-2"
   19. 
   20. # The subject line for the email.
   21. SUBJECT = "Amazon SES Test (SDK for Python)"
   22. 
   23. # The email body for recipients with non-HTML email clients.
   24. BODY_TEXT = ("Amazon SES Test (Python)\r\n"
   25.              "This email was sent with Amazon SES using the "
   26.              "AWS SDK pour Python (Boto)."
   27.             )
   28.             
   29. # The HTML body of the email.
   30. BODY_HTML = """<html>
   31. <head></head>
   32. <body>
   33.   <h1>Amazon SES Test (SDK for Python)</h1>
   34.   <p>This email was sent with
   35.     <a href='https://aws.amazon.com/ses/'>Amazon SES</a> using the
   36.     <a href='https://aws.amazon.com/sdk-for-python/'> AWS SDK pour Python (Boto)</a>.</p>
   37. </body>
   38. </html>
   39.             """            
   40. 
   41. # The character encoding for the email.
   42. CHARSET = "UTF-8"
   43. 
   44. # Create a new SES resource and specify a region.
   45. client = boto3.client('ses',region_name=AWS_REGION)
   46. 
   47. # Try to send the email.
   48. try:
   49.     #Provide the contents of the email.
   50.     response = client.send_email(
   51.         Destination={
   52.             'ToAddresses': [
   53.                 RECIPIENT,
   54.             ],
   55.         },
   56.         Message={
   57.             'Body': {
   58.                 'Html': {
   59.                     'Charset': CHARSET,
   60.                     'Data': BODY_HTML,
   61.                 },
   62.                 'Text': {
   63.                     'Charset': CHARSET,
   64.                     'Data': BODY_TEXT,
   65.                 },
   66.             },
   67.             'Subject': {
   68.                 'Charset': CHARSET,
   69.                 'Data': SUBJECT,
   70.             },
   71.         },
   72.         Source=SENDER,
   73.         # If you are not using a configuration set, comment or delete the
   74.         # following line
   75.         ConfigurationSetName=CONFIGURATION_SET,
   76.     )
   77. # Display an error if something goes wrong.	
   78. except ClientError as e:
   79.     print(e.response['Error']['Message'])
   80. else:
   81.     print("Email sent! Message ID:"),
   82.     print(response['MessageId'])
   ```

1. Dans `amazon-ses-sample.py`, remplacez les éléments suivants par vos propres valeurs :
   + **`sender@example.com`** – Remplacez par une adresse e-mail que vous avez vérifiée avec Amazon SES. Pour plus d'informations, consultez [Identités vérifiées](verify-addresses-and-domains.md). Les adresses e-mail d'Amazon SES sont sensibles à la casse. Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.
   + **`recipient@example.com`**—Remplacez par l'adresse du destinataire. Si votre compte est encore dans l'environnement de test (sandbox), vous devez vérifier cette adresse avant de l'utiliser. Pour plus d'informations, consultez [Demande d'accès à la production (sortie du sandbox d'Amazon SES)](request-production-access.md). Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.
   + **(Facultatif) `us-west-2`** — Si vous souhaitez utiliser Amazon SES dans une région autre que USA Ouest (Oregon), remplacez ceci par la région que vous souhaitez utiliser. Pour connaître la liste des régions dans lesquelles Amazon SES est disponible, consultez [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region) dans le document *Références générales AWS*.

1. Enregistrez `amazon-ses-sample.py`.

1. Pour exécuter le programme, ouvrez une invite de commande dans le même répertoire que `amazon-ses-sample.py`, puis entrez **python amazon-ses-sample.py**.

1. Vérifiez la sortie. Si l'envoi de l'e-mail aboutit, la console affiche «`Email sent!`». Dans le cas contraire, elle affiche un message d'erreur.

1. Connectez-vous au client de messagerie de l'adresse du destinataire. Vous verrez le message que vous avez envoyé.

------

# Création d'un fichier d'informations d'identification partagé à utiliser lors de l'envoi d'e-mails via Amazon SES à l'aide d'un AWS SDK
<a name="create-shared-credentials-file"></a>

La procédure suivante montre comment créer un fichier d'informations d'identification partagées dans votre répertoire. Pour que l'exemple de code du kit de développement logiciel (SDK) fonctionne correctement, vous devez créer ce fichier.

1. Dans un éditeur de texte, créez un fichier. Dans le fichier, collez le code suivant :

   ```
   1. [default]
   2. aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
   3. aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
   ```

1. Dans le fichier texte que vous venez de créer, remplacez-le `YOUR_AWS_ACCESS_KEY` par votre identifiant de clé d' AWS accès unique et remplacez-le `YOUR_AWS_SECRET_ACCESS_KEY` par votre clé d'accès AWS secrète unique.

1. Enregistrez le fichier. Le tableau suivant indique l'emplacement et le nom de fichier corrects pour votre système d'exploitation.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/ses/latest/dg/create-shared-credentials-file.html)
**Important**  
N'ajoutez pas d'extension de fichier lors de le registre du fichier des informations d'identification.

# Encodages de contenu pris en charge par Amazon SES
<a name="content-encodings"></a>

Les éléments suivants sont fournis à titre de référence.

Amazon SES prend en charge les codages de contenu suivants :
+ `deflate`
+ `gzip`
+ `identity`

Amazon SES prend également en charge le format d'en-tête Accept-Encoding suivant, conformément à la spécification [RFC 7231](https://tools.ietf.org/html/rfc7231#section-5.3.4) :
+ `Accept-Encoding:deflate,gzip`
+ `Accept-Encoding:`
+ `Accept-Encoding:*`
+ `Accept-Encoding:deflate;q=0.5,gzip;q=1.0`
+ `Accept-Encoding:gzip;q=1.0,identity;q=0.5,*;q=0`