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

Última atualização: 2020-11-10

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

Descrição breve

Para enviar e-mails do Lambda usando o Amazon SES, você precisa do seguinte:

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

Resolução

Criar uma política do IAM e uma função de execução

1.    Crie uma política do IAM usando o editor de políticas JSON. Cole este documento de política JSON no editor de políticas:

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

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

2.    Anexe a política do IAM a uma função do IAM que você planeja atribuir à sua função do Lambda.

Para conhecer as etapas detalhadas, consulte Adicionar permissões de identidade do IAM (console). Em seguida, siga as instruções em Para usar uma política gerenciada como política de permissões para uma identidade (console).

Verificar sua identidade do Amazon SES

Verifique a identidade do Amazon SES (domínio ou endereço de e-mail) da qual você enviará mensagens do Amazon SES.

Criar ou atualizar sua função do Lambda

Se ainda não fez isso, crie uma função do Lambda usando o console do Lambda ou criando e fazendo upload do seu próprio pacote de implantação.

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

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

3.    No painel Permissions (Permissões), em Execution role (Função de execução), confirme se a função do IAM com permissões do Amazon SES está atribuída à sua função.

4.    Em Function code (Código de função), no painel 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 por um endereço de e-mail para o qual você deseja enviar o e-mail. (Se a sua conta ainda estiver na sandbox do Amazon SES na Região da sua identidade verificada do Amazon SES, você deverá alterar recipientEmailAddress para um endereço de e-mail verificado pelo Amazon SES na mesma conta e Região.) 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 (“Teste“) 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()
};

Observação: se você não alterar us-west-2 para a Região da sua identidade verificada do Amazon SES, receberá uma mensagem de erro informando que o endereço de e-mail não foi verificado e com o código de erro “MessageRejected”. Se você executar a função do Lambda em uma Região que não oferece suporte ao Amazon SES, receberá uma mensagem de erro dizendo informando que o host está inacessível e com o código de erro “UnknownEndpoint”.

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

5.    Escolha Deploy (Implantar), o que salvará suas atualizações na função.

Enviar 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?