La guía de API referencia de la versión AWS SDK for JavaScript 3 describe en detalle todas las API operaciones de la AWS SDK for JavaScript versión 3 (V3).
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Envío de correo electrónico a través de Amazon SES
Este ejemplo de código de Node.js muestra:
Envía un mensaje de texto o HTML correo electrónico.
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.
Amazon SES API ofrece dos formas diferentes de enviar un correo electrónico, según el grado de control que desee sobre la composición del mensaje de correo electrónico: formateado y sin procesar. Para obtener más información, consulta Enviar correo electrónico formateado a través de Amazon SES API y Enviar correo electrónico sin procesar a través de Amazon SES API.
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 SDK for JavaScript para crear y utilizar plantillas de correo electrónico mediante los siguientes métodos de la clase SES
cliente:
Tareas previas necesarias
Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
-
Configure el entorno del proyecto para ejecutar estos TypeScript ejemplos de nodos e instale los módulos necesarios AWS SDK for JavaScript y de terceros. Siga las instrucciones de GitHub
.
Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre cómo proporcionar un archivo de credenciales compartido, consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de herramientas AWS SDKs y herramientas.
importante
Estos ejemplos muestran cómo importar/exportar comandos y objetos de servicio al 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 redacta un mensaje de correo electrónico e inmediatamente lo pone en 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 tu cuenta sigue en el entorno limitado de SES Amazon, solo puedes enviar a direcciones o dominios verificados o a direcciones de correo electrónico asociadas al simulador de SES buzones de Amazon. 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 de destino, una dirección CC: o una direcciónBCC:. 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 en los campos Para:, CCBCC: y:. 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
sendEmail
varias veces para enviar el mensaje a cada grupo.
Envío de un correo electrónico
En este ejemplo, usa un módulo Node.js para enviar correos electrónicos con AmazonSES.
Cree un directorio libs
y un módulo Node.js con el nombre de archivo sesClient.js
. Copia y pega el siguiente código en él, lo que crea el objeto de SES cliente de Amazon. Reemplazar REGION
con tu AWS región.
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 ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto para pasar los valores de los parámetros que definen el correo electrónico que se va a enviar, incluidas las direcciones del remitente y el destinatario, el asunto y el cuerpo del correo electrónico en texto y HTML formatos simples, al SendEmailCommand
método de la clase SES
cliente. Para llamar al SendEmailCommand
método, invoca un objeto de SES servicio de Amazon y pasa los parámetros.
nota
En este ejemplo, se importan y utilizan los clientes del paquete AWS Service V3 necesarios y los comandos de la V3, y se utiliza el send
método siguiendo un patrón asíncrono/de espera. En su lugar, puede crear este ejemplo con los comandos de la V2 realizando algunos cambios menores. Para obtener más detalles, consulte Uso de los comandos de la versión 3.
nota
Reemplazar toAddress
con la dirección a la que enviar el correo electrónico, y fromAddress
con la dirección de correo electrónico desde la que se envió 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. Amazon SES está en cola para que lo envíe el correo electrónico.
node ses_sendemail.js
Puedes encontrar este código de ejemplo aquí en GitHub
Envío de un correo electrónico mediante una plantilla
En este ejemplo, usa un módulo Node.js para enviar correos electrónicos con AmazonSES. Cree un módulo de Node.js con el nombre de archivo ses_sendtemplatedemail.js
. Configure SDK lo que se ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto para pasar los valores de los parámetros que definen el correo electrónico que se va a enviar, incluidas las direcciones del remitente y el destinatario, el asunto y el cuerpo del correo electrónico en texto plano y sus HTML formatos, al SendTemplatedEmailCommand
método de la clase SES
cliente. Para llamar al SendTemplatedEmailCommand
método, invoca un objeto de servicio SES al cliente de Amazon y pasa los parámetros.
nota
En este ejemplo, se importan y utilizan los clientes del paquete AWS Service V3 necesarios y los comandos de la V3, y se utiliza el send
método siguiendo un patrón asíncrono/de espera. En su lugar, puede crear este ejemplo con los comandos de la V2 realizando algunos cambios menores. Para obtener más detalles, consulte Uso de los comandos de la versión 3.
nota
Reemplazar REGION
con AWS tu región, USER
con el nombre y la dirección de correo electrónico a la que enviar el correo electrónico, VERIFIED_EMAIL
con la dirección de correo electrónico desde la que se envió el correo electrónico, y TEMPLATE_NAME
con 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. Amazon SES está en cola para que lo envíe el correo electrónico.
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, usa un módulo Node.js para enviar correos electrónicos con AmazonSES.
Cree un directorio libs
y un módulo Node.js con el nombre de archivo sesClient.js
. Copia y pega el siguiente código en él, lo que crea el objeto de SES cliente de Amazon. Reemplazar REGION
con tu AWS región.
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 ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto para pasar los valores de los parámetros que definen el correo electrónico que se va a enviar, incluidas las direcciones del remitente y el destinatario, el asunto y el cuerpo del correo electrónico en texto y HTML formatos simples, al SendBulkTemplatedEmailCommand
método de la clase SES
cliente. Para llamar al SendBulkTemplatedEmailCommand
método, invoca un objeto de SES servicio de Amazon y pasa los parámetros.
nota
En este ejemplo, se importan y utilizan los clientes del paquete AWS Service V3 necesarios y los comandos de la V3, y se utiliza el send
método siguiendo un patrón asíncrono/de espera. En su lugar, puede crear este ejemplo con los comandos de la V2 realizando algunos cambios menores. Para obtener más detalles, consulte Uso de los comandos de la versión 3.
nota
Reemplazar USERS
con los nombres y direcciones de correo electrónico a las que enviar el correo electrónico, VERIFIED_EMAIL_1
con la dirección de correo electrónico desde la que se envió el correo electrónico, y TEMPLATE_NAME
con 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. Amazon SES está en cola para que lo envíe el correo electrónico.
node ses_sendbulktemplatedemail.js
Este código de ejemplo se puede encontrar aquí en GitHub