Envio de e-mail usando a Amazon SES - AWS SDK for JavaScript

O Guia de API referência da AWS SDK for JavaScript V3 descreve detalhadamente todas as API operações da AWS SDK for JavaScript versão 3 (V3).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Envio de e-mail usando a Amazon SES

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Envie uma mensagem de texto ou HTML e-mail.

  • Envie e-mails usando um modelo de e-mail.

  • Envie e-mails em massa usando um modelo de e-mail.

A Amazon SES API oferece duas maneiras diferentes para você enviar um e-mail, dependendo de quanto controle você deseja sobre a composição da mensagem de e-mail: formatado e bruto. Para obter detalhes, consulte Envio de e-mail formatado usando a Amazon SES API e Enviando e-mail bruto usando a Amazon SES API.

O cenário

Neste exemplo, você usa uma série de módulos do Node.js para enviar e-mails de várias maneiras. Os módulos Node.js usam o SDK for JavaScript para criar e usar modelos de e-mail usando esses métodos da classe SES cliente:

Tarefas de pré-requisito

Para configurar e executar este exemplo, você deve primeiro concluir estas tarefas:

  • Configure o ambiente do projeto para executar esses TypeScript exemplos de Node e instale os módulos necessários AWS SDK for JavaScript e de terceiros. Siga as instruções em GitHub.

  • Crie um arquivo de configurações compartilhado com as credenciais de usuário. Para obter mais informações sobre como fornecer um arquivo de credenciais compartilhado, consulte Arquivos de configuração e credenciais compartilhados no Guia de referência de ferramentas AWS SDKs e ferramentas.

Importante

Esses exemplos demonstram como importar/exportar objetos e comandos de atendimento ao cliente usando ECMAScript6 ()ES6.

Requisitos de envio de mensagens de e-mail

A Amazon SES compõe uma mensagem de e-mail e imediatamente a coloca em fila para envio. Para enviar e-mail usando o método SendEmailCommand, sua mensagem deve atender aos seguintes requisitos:

  • Você deve enviar a mensagem a partir de um domínio ou endereço de e-mail verificado. Se você tentar enviar um e-mail usando um domínio ou endereço não verificados, a operação resultará no erro "Email address not verified".

  • Se sua conta ainda estiver no Amazon SES Sandbox, você só poderá enviar para endereços ou domínios verificados ou para endereços de e-mail associados ao Amazon SES Mailbox Simulator. Para obter mais informações, consulte Verificar endereços de e-mail e domínios no Guia do desenvolvedor do Amazon Simple Email Service.

  • O tamanho total da mensagem, incluindo anexos, deve ser menor que 10 MB.

  • A mensagem deve incluir pelo menos um endereço de e-mail de destinatário. O endereço do destinatário pode ser um endereço Para:, um endereço CC: ou um endereçoBCC:. Se o endereço de e-mail do destinatário for inválido (ou seja, não estiver no formato UserName@[SubDomain.]Domain.TopLevelDomain), a mensagem inteira será rejeitada, mesmo se a mensagem contiver outros destinatários válidos.

  • A mensagem não pode incluir mais de 50 destinatários nos campos Para:, CCBCC: e: Se você precisar enviar uma mensagem de e-mail para um público maior, pode dividir a lista de destinatários em grupos de 50 ou menos e chamar o método sendEmail várias vezes para enviar a mensagem para cada grupo.

Enviar um e-mail

Neste exemplo, use um módulo Node.js para enviar e-mails com a AmazonSES.

Crie um diretório libs e um módulo Node.js com o nome de arquivo sesClient.js. Copie e cole o código abaixo nele, o que cria o objeto SES cliente da Amazon. Substituir REGION com sua AWS região.

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 };

Esse código de exemplo pode ser encontrado aqui em GitHub.

Crie um módulo do Node.js com o nome de arquivo ses_sendemail.js. Configure o SDK conforme mostrado anteriormente, incluindo a instalação dos clientes e pacotes necessários.

Crie um objeto para passar os valores dos parâmetros que definem o e-mail a ser enviado, incluindo endereços do remetente e do destinatário, assunto e corpo do e-mail em texto e HTML formatos simples, para o SendEmailCommand método da classe SES cliente. Para chamar o SendEmailCommand método, invoque um objeto de SES serviço da Amazon, transmitindo os parâmetros.

nota

Este exemplo importa e usa os clientes do pacote AWS Service V3 necessários, os comandos V3 e usa o send método em um padrão async/await. Em vez disso, você pode criar esse exemplo usando comandos da V2 fazendo algumas pequenas alterações. Para obter detalhes, consulte Usando comandos v3.

nota

Substituir toAddress com o endereço para o qual enviar o e-mail, e fromAddress com o endereço de e-mail do qual enviar o 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; } };

Para executar o exemplo, digite o seguinte no prompt de comando. O e-mail está na fila para envio pela Amazon. SES

node ses_sendemail.js

Esse código de exemplo pode ser encontrado aqui em GitHub.

Enviar um e-mail usando um modelo

Neste exemplo, use um módulo Node.js para enviar e-mails com a AmazonSES. Crie um módulo do Node.js com o nome de arquivo ses_sendtemplatedemail.js. Configure o SDK conforme mostrado anteriormente, incluindo a instalação dos clientes e pacotes necessários.

Crie um objeto para passar os valores dos parâmetros que definem o e-mail a ser enviado, incluindo endereços do remetente e do destinatário, assunto, corpo do e-mail em texto simples e HTML formatos, para o SendTemplatedEmailCommand método da classe SES cliente. Para chamar o SendTemplatedEmailCommand método, invoque um objeto de atendimento SES ao cliente da Amazon, transmitindo os parâmetros.

nota

Este exemplo importa e usa os clientes do pacote AWS Service V3 necessários, os comandos V3 e usa o send método em um padrão async/await. Em vez disso, você pode criar esse exemplo usando comandos da V2 fazendo algumas pequenas alterações. Para obter detalhes, consulte Usando comandos v3.

nota

Substituir REGION com sua AWS região, USER com o nome e endereço de e-mail para o qual enviar o e-mail, VERIFIED_EMAIL com o endereço de e-mail do qual enviar o e-mail, e TEMPLATE_NAME com o nome do modelo.

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 executar o exemplo, digite o seguinte no prompt de comando. O e-mail está na fila para envio pela Amazon. SES

node ses_sendtemplatedemail.js

Esse código de exemplo pode ser encontrado aqui em GitHub.

Enviar um e-mail em massa usando um modelo

Neste exemplo, use um módulo Node.js para enviar e-mails com a AmazonSES.

Crie um diretório libs e um módulo Node.js com o nome de arquivo sesClient.js. Copie e cole o código abaixo nele, o que cria o objeto SES cliente da Amazon. Substituir REGION com sua AWS região.

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 };

Esse código de exemplo pode ser encontrado aqui em GitHub.

Crie um módulo do Node.js com o nome de arquivo ses_sendbulktemplatedemail.js. Configure o SDK conforme mostrado anteriormente, incluindo a instalação dos clientes e pacotes necessários.

Crie um objeto para passar os valores dos parâmetros que definem o e-mail a ser enviado, incluindo endereços do remetente e do destinatário, assunto e corpo do e-mail em texto e HTML formatos simples, para o SendBulkTemplatedEmailCommand método da classe SES cliente. Para chamar o SendBulkTemplatedEmailCommand método, invoque um objeto de SES serviço da Amazon, transmitindo os parâmetros.

nota

Este exemplo importa e usa os clientes do pacote AWS Service V3 necessários, os comandos V3 e usa o send método em um padrão async/await. Em vez disso, você pode criar esse exemplo usando comandos da V2 fazendo algumas pequenas alterações. Para obter detalhes, consulte Usando comandos v3.

nota

Substituir USERS com os nomes e endereços de e-mail para os quais enviar o e-mail, VERIFIED_EMAIL_1 com o endereço de e-mail do qual enviar o e-mail, e TEMPLATE_NAME com o nome do modelo.

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 executar o exemplo, digite o seguinte no prompt de comando. O e-mail está na fila para envio pela Amazon. SES

node ses_sendbulktemplatedemail.js

Esse código de exemplo pode ser encontrado aqui em GitHub.