La Guía de referencia de la API de AWS SDK for JavaScript V3 describe en detalle todas las operaciones de la API para la versión 3 (V3) de AWS SDK for JavaScript.
Envío de correo electrónico con Amazon SES
Este ejemplo de código de Node.js muestra:
Enviar un correo electrónico en HTML o de texto.
Enviar mensajes de correo electrónico basados en una plantilla de correo electrónico.
Enviar mensajes de correo electrónico masivos basados en una plantilla de correo electrónico.
La API de Amazon SES ofrece dos formas distintas de enviar los correos electrónicos, según el nivel de control que desee tener sobre la composición del mensaje de correo electrónico: con o sin formato. Para obtener información detallada, consulte Envío de correo electrónico con formato utilizando la API de Amazon SES y Envío de correo electrónico sin formato usando la API de Amazon SES.
El escenario
En este ejemplo, va a utilizar una serie de módulos de Node.js para enviar correos electrónicos de distintas maneras. Los módulos de Node.js utilizan el SDK para JavaScript para crear y usar plantillas de correo electrónico mediante los métodos siguientes de la clase de cliente de Amazon SES:
Tareas previas necesarias
Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
-
Configure el entorno del proyecto para ejecutar estos ejemplos de Node TypeScript e instale los módulos necesarios de AWS SDK for JavaScript y de terceros. Siga las instrucciones en GitHub
.
Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre proporcionar un archivo de credenciales compartido, consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de las herramientas y los SDK de AWS.
importante
Estos ejemplos muestran cómo importar/exportar comandos y objetos del servicio de cliente mediante ECMAScript6 (ES6).
Requiere la versión 13.x o superior de Node.js. Para descargar e instalar la versión más reciente de Node.js, consulte Descargas de Node.js
. Si prefiere utilizar la sintaxis CommonJS, consulte Sintaxis ES6/commonJS de JavaScript.
Requisitos para enviar un mensaje de correo electrónico
Amazon SES crea un mensaje de correo electrónico e inmediatamente lo pone en la cola para su envío. Para enviar correo electrónico por medio del método SendEmailCommand, el mensaje debe cumplir los requisitos siguientes:
Tiene que enviar el mensaje desde un dominio o una dirección de correo electrónico que se haya verificado. Si intenta enviar un correo electrónico mediante una dirección o un dominio que no se haya verificado, la operación generará un error
"Email address not verified".Si su cuenta está todavía en el entorno de pruebas de Amazon SES, solo podrá realizar envíos a direcciones o dominios verificados, o a direcciones de correo electrónico que estén asociadas al simulador de bandeja de correo de Amazon SES. Para obtener más información, consulte Verificación de direcciones de correo electrónico y dominios en la Guía para desarrolladores de Amazon Simple Email Service.
El tamaño total del mensaje, los archivos adjuntos incluidos, debe ser inferior a 10 MB.
El mensaje tiene que incluir al menos una dirección de correo electrónico de destinatario. La dirección del destinatario puede ser una dirección A:, una dirección CC: o una dirección CCO. Si la dirección de correo electrónico de un destinatario no es válida (es decir, no sigue el formato
UserName@[SubDomain.]Domain.TopLevelDomain), se rechazará todo el mensaje, aunque este contenga otros destinatarios que sí son válidos.El mensaje no puede incluir más de 50 destinatarios entre los campos A:, CC: y CCO: en total. Si necesita enviar un mensaje de correo electrónico a más destinatarios, puede dividir la lista de destinatarios en grupos de 50 o menos y luego llamar al método
sendEmailvarias veces para enviar el mensaje a cada grupo.
Envío de un correo electrónico
En este ejemplo, utilice un módulo de Node.js para enviar un correo electrónico con Amazon SES.
Cree un directorio libs y un módulo Node.js con el nombre de archivo sesClient.js. Copie y pegue el siguiente código en él para crear el objeto de cliente de Amazon SES. Sustituya REGION por su región de AWS.
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 };
Este código de ejemplo se puede encontrar aquí en GitHub
Cree un módulo de Node.js con el nombre de archivo ses_sendemail.js. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto para transferir los valores de parámetros que definen el correo electrónico que se va a enviar, como las direcciones del remitente y el receptor, y el cuerpo del correo electrónico en formatos de texto y HTML, al método SendEmailCommand de la clase de cliente de Amazon SES. Para llamar al método SendEmailCommand, invoque un objeto de servicio de Amazon SES transfiriendo los parámetros.
nota
En este ejemplo, se importan y utilizan los clientes del paquete de Service V3 de AWS necesarios, los comandos de la V3, y se utiliza el método send siguiendo un patrón async/await. En su lugar, puede crear este ejemplo con los comandos de la V2 realizando algunos cambios menores. Para obtener más información, consulte Uso de comandos de v3.
nota
Sustituya toAddress por la dirección a la que se va a enviar el correo electrónico y fromAddress por la dirección de correo electrónico desde la que se envía el correo electrónico.
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; } };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos. El correo electrónico se pone en cola para que Amazon SES lo envíe.
node ses_sendemail.js
Este código de ejemplo se puede encontrar aquí en GitHub
Envío de un correo electrónico mediante una plantilla
En este ejemplo, utilice un módulo de Node.js para enviar un correo electrónico con Amazon SES. Cree un módulo de Node.js con el nombre de archivo ses_sendtemplatedemail.js. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto para transferir los valores de parámetros que definen el correo electrónico que se va a enviar, como las direcciones del remitente y el receptor, el cuerpo del correo electrónico en formatos de texto y HTML, al método SendTemplatedEmailCommand de la clase de cliente de Amazon SES. Para llamar al método SendTemplatedEmailCommand, invoque un objeto de servicio de cliente de Amazon SES transfiriendo los parámetros.
nota
En este ejemplo, se importan y utilizan los clientes del paquete de Service V3 de AWS necesarios, los comandos de la V3, y se utiliza el método send siguiendo un patrón async/await. En su lugar, puede crear este ejemplo con los comandos de la V2 realizando algunos cambios menores. Para obtener más información, consulte Uso de comandos de v3.
nota
Sustituya REGION por su región de AWS, USER por el nombre y la dirección de correo electrónico a la que se va enviar el correo electrónico, VERIFIED_EMAIL por la dirección de correo electrónico desde la que se envía el correo electrónico y TEMPLATE_NAME por el nombre de la plantilla.
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; } };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos. El correo electrónico se pone en cola para que Amazon SES lo envíe.
node ses_sendtemplatedemail.js
Este código de ejemplo se puede encontrar aquí en GitHub
Envío masivo de correos electrónicos mediante una plantilla
En este ejemplo, utilice un módulo de Node.js para enviar un correo electrónico con Amazon SES.
Cree un directorio libs y un módulo Node.js con el nombre de archivo sesClient.js. Copie y pegue el siguiente código en él para crear el objeto de cliente de Amazon SES. Sustituya REGION por su región de AWS.
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 };
Este código de ejemplo se puede encontrar aquí en GitHub
Cree un módulo de Node.js con el nombre de archivo ses_sendbulktemplatedemail.js. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto para transferir los valores de parámetros que definen el correo electrónico que se va a enviar, como las direcciones del remitente y el receptor, y el cuerpo del correo electrónico en formatos de texto y HTML, al método SendBulkTemplatedEmailCommand de la clase de cliente de Amazon SES. Para llamar al método SendBulkTemplatedEmailCommand, invoque un objeto de servicio de Amazon SES transfiriendo los parámetros.
nota
En este ejemplo, se importan y utilizan los clientes del paquete de Service V3 de AWS necesarios, los comandos de la V3, y se utiliza el método send siguiendo un patrón async/await. En su lugar, puede crear este ejemplo con los comandos de la V2 realizando algunos cambios menores. Para obtener más información, consulte Uso de comandos de v3.
nota
Sustituya USERS por los nombres y direcciones de correo electrónico a los que se va a enviar el correo electrónico, VERIFIED_EMAIL_1 por la dirección de correo electrónico desde la que se envía el correo electrónico y TEMPLATE_NAME por el nombre de la plantilla.
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; } };
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos. El correo electrónico se pone en cola para que Amazon SES lo envíe.
node ses_sendbulktemplatedemail.js
Este código de ejemplo se puede encontrar aquí en GitHub