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

Anunciamos o próximo fim do suporte para o AWS SDK for JavaScript v2. Recomendamos migrar para o AWS SDK for JavaScript v3. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

Envio de e-mail usando o Amazon SES

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Envie uma e-mail de texto ou HTML.

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

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

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

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 do Node.js usam o SDK para JavaScript para criar e usar modelos de e-mail com estes métodos da classe de cliente do AWS.SES:

Tarefas de pré-requisito

Requisitos de envio de mensagens de e-mail

O Amazon SES compõe uma mensagem de e-mail e imediatamente a coloca na fila para envio. Para enviar e-mail usando o método SES.sendEmail, 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 na sandbox do Amazon SES, você só poderá enviar para endereços ou domínios verificados ou para endereços de e-mail associados simulador de caixa postal do Amazon SES. Para obter mais informações, consulte Verificar endereços de e-mail e domínios no Amazon SES 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ço CCO:. 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:, CC: e CCO:. 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 do Node.js para enviar e-mail com o Amazon SES. Crie um módulo do Node.js com o nome de arquivo ses_sendemail.js. Configure o SDK como mostrado anteriormente.

Crie um objeto para transmitir os valores de parâmetro que definem o e-mail a ser enviado, incluindo endereços do remetente e do destinatário, assunto, corpo do e-mail em texto sem formatação e formato HTML, para o método sendEmail da classe de cliente AWS.SES. Para chamar o método sendEmail, crie uma promessa para invocar um objeto de serviço do Amazon SES passando os parâmetros. Depois, lide com response no retorno de chamada da promessa.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create sendEmail params var params = { Destination: { /* required */ CcAddresses: [ "EMAIL_ADDRESS", /* more items */ ], ToAddresses: [ "EMAIL_ADDRESS", /* more items */ ], }, 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: "Test email", }, }, Source: "SENDER_EMAIL_ADDRESS" /* required */, ReplyToAddresses: [ "EMAIL_ADDRESS", /* more items */ ], }; // Create the promise and SES service object var sendPromise = new AWS.SES({ apiVersion: "2010-12-01" }) .sendEmail(params) .promise(); // Handle promise's fulfilled/rejected states sendPromise .then(function (data) { console.log(data.MessageId); }) .catch(function (err) { console.error(err, err.stack); });

Para executar o exemplo, digite o seguinte na linha de comando. O e-mail é colocado na fila para ser enviado pelo Amazon SES.

node ses_sendemail.js

Este código de exemplo pode ser encontrado aqui no GitHub.

Enviar um e-mail usando um modelo

Neste exemplo, use um módulo do Node.js para enviar e-mail com o Amazon SES. Crie um módulo do Node.js com o nome de arquivo ses_sendtemplatedemail.js. Configure o SDK como mostrado anteriormente.

Crie um objeto para transmitir os valores de parâmetro que definem o e-mail a ser enviado, incluindo endereços do remetente e do destinatário, assunto, corpo do e-mail em texto sem formatação e formato HTML, para o método sendTemplatedEmail da classe de cliente AWS.SES. Para chamar o método sendTemplatedEmail, crie uma promessa para invocar um objeto de serviço do Amazon SES passando os parâmetros. Depois, lide com response no retorno de chamada da promessa.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create sendTemplatedEmail params var params = { Destination: { /* required */ CcAddresses: [ "EMAIL_ADDRESS", /* more CC email addresses */ ], ToAddresses: [ "EMAIL_ADDRESS", /* more To email addresses */ ], }, Source: "EMAIL_ADDRESS" /* required */, Template: "TEMPLATE_NAME" /* required */, TemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }' /* required */, ReplyToAddresses: ["EMAIL_ADDRESS"], }; // Create the promise and SES service object var sendPromise = new AWS.SES({ apiVersion: "2010-12-01" }) .sendTemplatedEmail(params) .promise(); // Handle promise's fulfilled/rejected states sendPromise .then(function (data) { console.log(data); }) .catch(function (err) { console.error(err, err.stack); });

Para executar o exemplo, digite o seguinte na linha de comando. O e-mail é colocado na fila para ser enviado pelo Amazon SES.

node ses_sendtemplatedemail.js

Este código de exemplo pode ser encontrado aqui no GitHub.

Enviar um e-mail em massa usando um modelo

Neste exemplo, use um módulo do Node.js para enviar e-mail com o Amazon SES. Crie um módulo do Node.js com o nome de arquivo ses_sendbulktemplatedemail.js. Configure o SDK como mostrado anteriormente.

Crie um objeto para transmitir os valores de parâmetro que definem o e-mail a ser enviado, incluindo endereços do remetente e do destinatário, assunto, corpo do e-mail em texto sem formatação e formato HTML, para o método sendBulkTemplatedEmail da classe de cliente AWS.SES. Para chamar o método sendBulkTemplatedEmail, crie uma promessa para invocar um objeto de serviço do Amazon SES passando os parâmetros. Depois, lide com response no retorno de chamada da promessa.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create sendBulkTemplatedEmail params var params = { Destinations: [ /* required */ { Destination: { /* required */ CcAddresses: [ "EMAIL_ADDRESS", /* more items */ ], ToAddresses: [ "EMAIL_ADDRESS", "EMAIL_ADDRESS", /* more items */ ], }, ReplacementTemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }', }, ], Source: "EMAIL_ADDRESS" /* required */, Template: "TEMPLATE_NAME" /* required */, DefaultTemplateData: '{ "REPLACEMENT_TAG_NAME":"REPLACEMENT_VALUE" }', ReplyToAddresses: ["EMAIL_ADDRESS"], }; // Create the promise and SES service object var sendPromise = new AWS.SES({ apiVersion: "2010-12-01" }) .sendBulkTemplatedEmail(params) .promise(); // Handle promise's fulfilled/rejected states sendPromise .then(function (data) { console.log(data); }) .catch(function (err) { console.log(err, err.stack); });

Para executar o exemplo, digite o seguinte na linha de comando. O e-mail é colocado na fila para ser enviado pelo Amazon SES.

node ses_sendbulktemplatedemail.js

Este código de exemplo pode ser encontrado aqui no GitHub.