O Guia de referência da API do AWS SDK for JavaScript V3 descreve em detalhes todas as operações da API para o 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
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.
Isso requer o Node.js versão 13.x ou superior. Para baixar e instalar a versão mais recente do Node.js, consulte Downloads do Node.js
. Se você preferir usar a sintaxe do CommonJS, consulte Sintaxe ES6/CommonJS de JavaScript.
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