Como faço para enviar e-mail usando o Lambda e o Amazon SES?

Última atualização: 15-09-2021

Quero usar o AWS Lambda para enviar e-mail usando o Amazon Simple Email Service (Amazon SES). Como faço para configurar isso?

Breve descrição

Para enviar e-mails de uma função do Lambda usando o Amazon SES, faça o seguinte:

1.    Crie uma política e uma função de execução do AWS Identity and Access Management (IAM) para que o Lambda execute a chamada de API.

2.    Confirme sua identidade verificada do Amazon SES (domínio ou endereço de e-mail).

3.    Crie ou atualize uma função do Lambda que inclua lógica para enviar e-mail pelo Amazon SES.

Observação: para incluir um anexo PDF em seus e-mails, você deve usar a operação de API Amazon SES SendRawEmail. Para obter mais informações, consulte Envio de e-mail bruto usando a API do Amazon SES.

Resolução

Observação: o exemplo de código de função do Lambda Node.js neste artigo é fornecido no estado em que se encontra. Adapte o exemplo ao seu caso de uso ou crie o seu próprio código na sua linguagem de programação preferida.

Crie uma política do IAM e uma função de execução para o Lambda executar a chamada de API

1.    Crie uma política do IAM usando o editor de políticas JSON. Copie e cole o seguinte documento da política JSON no editor:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}

Observação: para obter mais informações e exemplos de como restringir o acesso a essa política, consulte Exemplo de políticas do IAM para o Amazon SES.

2.    Anexe a política do IAM a uma função do IAM. Para obter instruções, consulte a seção Usar uma política gerenciada como política de permissões para uma identidade (console) em Adição de permissões de identidade do IAM (console).

Observação: você atribuirá essa função do IAM à função do Lambda nas etapas a seguir.

Confirme sua identidade verificada do Amazon SES (domínio ou endereço de e-mail)

Para verificar um domínio, consulte Verificação de domínios no Amazon SES.

Para verificar um endereço de e-mail, consulte Verificação de endereços de e-mail no Amazon SES.

Crie ou atualize uma função do Lambda que incluia lógica para enviar e-mail pelo Amazon SES

1.    Se você ainda não o fez, crie uma função do Lambda.

Observação: você pode criar uma função do Lambda usando o console do Lambda ou criando e carregando um pacote de implantação.

2.    No console do Lambda, no painel de navegação esquerdo, escolha Functions (Funções).

3.    Escolha o nome da sua função.

4.    Na guia Configuration (Configuração), no painel Permissions (Permissões), observe a função de execução da função. Verifique se a função do IAM com permissões do Amazon SES que você criou anteriormente está listada. Se a função do IAM correta não estiver listada, atribua a função correta à função.

5.    Em Function code (Código de função), no painel do editor, cole o seguinte exemplo de código de função:

Observação: substitua us-west-2 pela região da AWS da sua identidade verificada do Amazon SES. Substitua "RecipientEmailAddress", ... pelo endereço de e-mail para o qual você deseja enviar o e-mail. Substitua SourceEmailAddress pelo seu endereço de e-mail de remetente verificado pelo Amazon SES ou por qualquer endereço de e-mail de um domínio verificado pelo Amazon SES. Opcionalmente, edite o corpo da mensagem ("Test") e a linha de assunto ("Test Email") de acordo com suas preferências.

// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

var aws = require("aws-sdk");
var ses = new aws.SES({ region: "us-west-2" });
exports.handler = async function (event) {
  var params = {
    Destination: {
      ToAddresses: ["RecipientEmailAddress", ...],
    },
    Message: {
      Body: {
        Text: { Data: "Test" },
      },

      Subject: { Data: "Test Email" },
    },
    Source: "SourceEmailAddress",
  };
 
  return ses.sendEmail(params).promise()
};

Para obter mais informações sobre como usar a API sendEmail, consulte a documentação do AWS SDK for JavaScript.

5.    Escolha Deploy (Implantar).

(Opcional) Envie um e-mail de teste

1.    No console do Lambda, configure um evento de teste para a sua função.

Observação: a carga útil do teste é necessária, mas não é usada para este exemplo de código.

2.    Escolha Test (Testar). O Lambda usa o Amazon SES para enviar o e-mail de teste ao destinatário.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?