Envoyer un e-mail via Amazon SES - AWS SDK for JavaScript

Le guide de API référence AWS SDK for JavaScript V3 décrit en détail toutes les API opérations de la AWS SDK for JavaScript version 3 (V3).

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.

Envoyer un e-mail via Amazon SES

JavaScript code example that applies to Node.js execution

Cet exemple de code Node.js présente :

  • Envoyez un texto ou un HTML e-mail.

  • L'envoi d'e-mails basés sur un modèle d'e-mail.

  • L'envoi d'e-mails en bloc basés sur un modèle d'e-mail.

Amazon SES API propose deux méthodes différentes pour envoyer un e-mail, en fonction du niveau de contrôle que vous souhaitez sur la composition du message : formaté et brut. Pour plus de détails, consultez les sections Envoi d'e-mails formatés via Amazon SES API et Envoi d'e-mails bruts via Amazon SES API.

Le scénario

Dans cet exemple, vous utilisez une série de modules Node.js pour envoyer un e-mail de plusieurs façons. Les modules Node.js utilisent le SDK for pour JavaScript créer et utiliser des modèles de courrier électronique en utilisant les méthodes suivantes de la classe SES client :

Tâches préalables

Pour configurer et exécuter cet exemple, vous devez d'abord :

  • Configurez l'environnement du projet pour exécuter ces TypeScript exemples de nœuds et installez les modules requis AWS SDK for JavaScript et tiers. Suivez les instructions figurant sur GitHub.

Important

Ces exemples montrent comment importer/exporter des objets de service client et des commandes à l'aide de ECMAScript6 ()ES6.

Exigences relatives à l'envoi de messages électroniques

Amazon SES rédige un e-mail et le met immédiatement en file d'attente pour envoi. Pour envoyer un e-mail à l'aide de la méthode SendEmailCommand, votre message doit répondre aux exigences suivantes :

  • Vous devez envoyer le message à partir d'une adresse e-mail ou d'un domaine vérifié(e). Si vous essayez d'envoyer un e-mail à l'aide d'une adresse ou d'un domaine non vérifié(e), cela engendre une erreur "Email address not verified".

  • Si votre compte est toujours dans le SES sandbox d'Amazon, vous ne pouvez envoyer que vers des adresses ou des domaines vérifiés, ou vers des adresses e-mail associées à Amazon SES Mailbox Simulator. Pour plus d'informations, consultez la section Vérification des adresses e-mail et des domaines dans le manuel Amazon Simple Email Service Developer Guide.

  • La taille totale du message, pièces jointes comprises, doit être inférieure à 10 Mo.

  • Le message doit inclure au moins un destinataire. L'adresse du destinataire peut être une adresse To :, une adresse CC : ou une adresse BCC :. Si l'adresse e-mail d'un destinataire n'est pas valide (c'est-à-dire qu'elle n'est pas au formatUserName@[SubDomain.]Domain.TopLevelDomain), le message entier est rejeté, même s'il contient d'autres destinataires valides.

  • Le message ne peut pas inclure plus de 50 destinataires dans les champs To :, CC BCC : et :. Si vous avez besoin d'envoyer un e-mail à davantage de personnes, vous pouvez diviser votre liste de destinataires en groupes de 50 ou moins, puis appeler la méthode sendEmail plusieurs fois pour envoyer le message à chaque groupe.

Envoi d'un e-mail

Dans cet exemple, utilisez un module Node.js pour envoyer un e-mail avec AmazonSES.

Créez un libs répertoire et créez un module Node.js avec le nom du fichiersesClient.js. Copiez-collez le code ci-dessous pour créer l'objet SES client Amazon. Remplacez REGION avec votre AWS région.

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

Cet exemple de code se trouve ici GitHub.

Créez un module Node.js nommé ses_sendemail.js. Configurez le SDK comme indiqué précédemment, notamment en installant les clients et les packages requis.

Créez un objet pour transmettre les valeurs des paramètres qui définissent l'e-mail à envoyer, y compris les adresses de l'expéditeur et du destinataire, l'objet et le corps de l'e-mail en texte brut et dans des HTML formats, à la SendEmailCommand méthode de la classe SES client. Pour appeler la SendEmailCommand méthode, appelez un objet SES de service Amazon en transmettant les paramètres.

Note

Cet exemple importe et utilise les clients du package AWS Service V3 requis, les commandes V3, et utilise la send méthode dans un modèle async/await. Vous pouvez créer cet exemple à l'aide des commandes V2 en apportant quelques modifications mineures. Pour plus de détails, consultez Utilisation des commandes v3.

Note

Remplacez toAddress avec l'adresse à laquelle envoyer l'e-mail, et fromAddress avec l'adresse e-mail à partir de laquelle envoyer l'e-mail.

import { SendEmailCommand } from "@aws-sdk/client-ses"; import { sesClient } from "./libs/sesClient.js"; const createSendEmailCommand = (toAddress, fromAddress) => { return new SendEmailCommand({ Destination: { /* required */ CcAddresses: [ /* more items */ ], ToAddresses: [ toAddress, /* more To-email addresses */ ], }, Message: { /* required */ Body: { /* required */ Html: { Charset: "UTF-8", Data: "HTML_FORMAT_BODY", }, Text: { Charset: "UTF-8", Data: "TEXT_FORMAT_BODY", }, }, Subject: { Charset: "UTF-8", Data: "EMAIL_SUBJECT", }, }, Source: fromAddress, ReplyToAddresses: [ /* more items */ ], }); }; const run = async () => { const sendEmailCommand = createSendEmailCommand( "recipient@example.com", "sender@example.com", ); try { return await sesClient.send(sendEmailCommand); } catch (caught) { if (caught instanceof Error && caught.name === "MessageRejected") { /** @type { import('@aws-sdk/client-ses').MessageRejected} */ const messageRejectedError = caught; return messageRejectedError; } throw caught; } };

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande. L'e-mail est mis en file d'attente pour être envoyé par Amazon. SES

node ses_sendemail.js

Cet exemple de code se trouve ici GitHub.

Envoyer un e-mail à l'aide d'un modèle

Dans cet exemple, utilisez un module Node.js pour envoyer un e-mail avec AmazonSES. Créez un module Node.js nommé ses_sendtemplatedemail.js. Configurez le SDK comme indiqué précédemment, notamment en installant les clients et les packages requis.

Créez un objet pour transmettre les valeurs des paramètres qui définissent l'e-mail à envoyer, y compris les adresses de l'expéditeur et du destinataire, l'objet, le corps de l'e-mail en texte brut et les HTML formats, à la SendTemplatedEmailCommand méthode de la classe SES client. Pour appeler la SendTemplatedEmailCommand méthode, appelez un objet SES du service client Amazon en transmettant les paramètres.

Note

Cet exemple importe et utilise les clients du package AWS Service V3 requis, les commandes V3, et utilise la send méthode dans un modèle async/await. Vous pouvez créer cet exemple à l'aide des commandes V2 en apportant quelques modifications mineures. Pour plus de détails, consultez Utilisation des commandes v3.

Note

Remplacez REGION avec votre AWS région, USER avec le nom et l'adresse e-mail auxquels envoyer l'e-mail, VERIFIED_EMAIL avec l'adresse e-mail à partir de laquelle envoyer le message, et TEMPLATE_NAME avec le nom du modèle.

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

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande. L'e-mail est mis en file d'attente pour être envoyé par Amazon. SES

node ses_sendtemplatedemail.js

Cet exemple de code se trouve ici GitHub.

Envoi d'e-mails en masse à l'aide d'un modèle

Dans cet exemple, utilisez un module Node.js pour envoyer un e-mail avec AmazonSES.

Créez un libs répertoire et créez un module Node.js avec le nom du fichiersesClient.js. Copiez-collez le code ci-dessous pour créer l'objet SES client Amazon. Remplacez REGION avec votre AWS région.

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

Cet exemple de code se trouve ici GitHub.

Créez un module Node.js nommé ses_sendbulktemplatedemail.js. Configurez le SDK comme indiqué précédemment, notamment en installant les clients et les packages requis.

Créez un objet pour transmettre les valeurs des paramètres qui définissent l'e-mail à envoyer, y compris les adresses de l'expéditeur et du destinataire, l'objet et le corps de l'e-mail en texte brut et dans des HTML formats, à la SendBulkTemplatedEmailCommand méthode de la classe SES client. Pour appeler la SendBulkTemplatedEmailCommand méthode, appelez un objet SES de service Amazon en transmettant les paramètres.

Note

Cet exemple importe et utilise les clients du package AWS Service V3 requis, les commandes V3, et utilise la send méthode dans un modèle async/await. Vous pouvez créer cet exemple à l'aide des commandes V2 en apportant quelques modifications mineures. Pour plus de détails, consultez Utilisation des commandes v3.

Note

Remplacez USERS avec les noms et adresses e-mail auxquels envoyer l'e-mail, VERIFIED_EMAIL_1 avec l'adresse e-mail à partir de laquelle envoyer le message, et TEMPLATE_NAME avec le nom du modèle.

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

Pour exécuter l'exemple, entrez ce qui suit à l'invite de commande. L'e-mail est mis en file d'attente pour être envoyé par Amazon. SES

node ses_sendbulktemplatedemail.js

Cet exemple de code se trouve ici GitHub.