Pular para o conteúdo
Docs

Guia

Migre do Amazon SES para o Emailit. Faça a correspondência de identities, sandbox e cotas, substitua as chamadas ao SDK e as credenciais SMTP e transforme os eventos do SNS em webhooks assinados.

Atualizado em 1 de out. de 2026

Este guia mostra a correspondência entre os conceitos, as chamadas à API, as notificações de eventos, as supressões e os templates do Amazon SES e os equivalentes no Emailit. Leia antes Migrar para o Emailit para conhecer a ordem geral e saber como usar os dois provedores em paralelo.

Conceitos

Amazon SES Emailit
Conta da AWS em uma região Workspace
Verified identities: domínios e endereços de e-mail Domínios de envio. Identities de um único endereço de e-mail não estão disponíveis.
Registros CNAME do Easy DKIM Um registro DKIM TXT, emailit._domainkey
Custom MAIL FROM domain O return path emailit.<your domain>, que todo domínio tem
Sandbox e solicitação de acesso de produção Modo sandbox e acesso de produção. No modo sandbox, você pode enviar para os e-mails das contas dos membros do workspace.
Sending quota e maximum send rate Limites de envio: e-mails por segundo e por dia, renovados à meia-noite UTC
Credenciais do IAM e assinatura SigV4 Chaves de API em um cabeçalho Authorization: Bearer
Credenciais SMTP A sua chave de API, usada como senha do SMTP
Configuration sets e event destinations (SNS, EventBridge, Firehose) Webhooks que enviam JSON assinado para o seu endpoint HTTPS
Account-level suppression list Lista de supressão do workspace
Email templates Templates com alias e versões
Receipt rules Recebimento de e-mails com o webhook email.received
Email tags meta
Dedicated IPs IPs dedicados sob solicitação
Contact lists Contatos, listas de contatos e campanhas

Atualizar as chamadas à API

As chamadas ao SES são assinadas com as suas credenciais da AWS, então normalmente você as faz por um SDK da AWS. Com o Emailit, você envia uma requisição JSON com uma chave de API ou usa o SDK do Emailit para a sua linguagem. Em Node.js:

Antes: Amazon SES (AWS SDK v3)
import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2';

const ses = new SESv2Client({ region: 'eu-west-1' });

await ses.send(new SendEmailCommand({
  FromEmailAddress: 'Acme <hello@acme.com>',
  Destination: { ToAddresses: ['ada@example.com'] },
  Content: {
    Simple: {
      Subject: { Data: 'Your receipt' },
      Body: {
        Text: { Data: 'Thanks for your order.' },
        Html: { Data: '<p>Thanks for your order.</p>' },
      },
    },
  },
}));
Depois: Emailit
import { Emailit } from '@emailit/node';

const emailit = new Emailit(process.env.EMAILIT_API_KEY);

await emailit.emails.send({
  from: 'Acme <hello@acme.com>',
  to: 'ada@example.com',
  subject: 'Your receipt',
  text: 'Thanks for your order.',
  html: '<p>Thanks for your order.</p>',
});
Amazon SES (API v2 SendEmail) Emailit (POST /v2/emails)
Credenciais da AWS e assinatura SigV4 Authorization: Bearer secret_…
FromEmailAddress from
Destination.ToAddresses, CcAddresses, BccAddresses to, cc, bcc, até 50 cada
ReplyToAddresses reply_to
Content.Simple.Subject.Data subject
Content.Simple.Body.Html.Data, Text.Data html, text
Content.Template.TemplateName template, um alias ou ID
Content.Template.TemplateData (uma string JSON) variables (um objeto JSON)
Content.Raw (uma mensagem MIME completa) Envie a mensagem MIME pelo SMTP relay ou recrie-a com html, text e attachments
EmailTags meta, devolvido nos eventos de webhook
ConfigurationSetName Não é necessário. Os eventos vão para os seus webhooks, e o rastreamento é definido por domínio ou por e-mail com tracking.
Resposta MessageId 200 com id (em_…), message_id, status: "accepted" e ids por destinatário

O Emailit também oferece agendamento com scheduled_at e novas tentativas seguras com um cabeçalho Idempotency-Key, o que o SES não oferece no envio. Consulte Enviar um e-mail.

Mudar as configurações SMTP

Configuração Amazon SES Emailit
Host email-smtp.<region>.amazonaws.com smtp.emailit.com
Porta 587, 2587 ou 25 (STARTTLS), 465 ou 2465 (TLS) 587, 2587, 2525 ou 25 (STARTTLS), 465 (TLS)
Usuário O seu nome de usuário SMTP do SES emailit
Senha A sua senha SMTP do SES A sua chave de API do Emailit

O Emailit não lê cabeçalhos do SES como X-SES-CONFIGURATION-SET. Remova-os. Consulte Configurações SMTP.

Correspondência das notificações de eventos

O SES publica os eventos por meio de configuration sets no SNS, no EventBridge ou no Firehose. O Emailit os envia diretamente para o seu endpoint HTTPS como webhooks, então não há tópico para assinar nem confirmar.

Tipo de evento do SES Evento do Emailit
Send email.accepted (somente API)
Delivery email.delivered
DeliveryDelay email.attempted
Bounce com bounceType Permanent email.bounced
Bounce com bounceType Transient email.attempted enquanto o Emailit faz novas tentativas, e depois email.bounced se todas as novas tentativas falharem
Complaint email.complained
Open email.loaded
Click email.clicked
Subscription email.unsubscribed, somente para e-mails de campanha
Reject, Rendering Failure Sem equivalente direto. Erros na requisição, como um template inexistente, são retornados pela API na hora, e as mensagens que o Emailit não vai entregar recebem o status held.
Receipt rule com uma ação do SNS ou do Lambda email.received; depois, busque o conteúdo com GET /emails/{id}

O payload também muda:

  • Cada requisição do Emailit é um array JSON de até 100 eventos, com o nome em type e o e-mail em data.object.
  • Use data.object.id, o ID em_ da resposta do envio, em vez do messageId do SES. Os seus valores de meta ficam em data.object.meta.
  • Em vez de conferir as assinaturas das mensagens do SNS, verifique X-Emailit-Signature com X-Emailit-Timestamp e o seu segredo whsec_. Consulte Assinatura das requisições.
JavaScript
for (const event of req.body) {
  const email = event.data.object;
  if (event.type === 'email.bounced') markBounced(email.to, email.id);
  if (event.type === 'email.complained') unsubscribe(email.to);
}

Migrar as supressões

  1. Exporte a account-level suppression list do SES com a AWS CLI. Se a saída incluir um NextToken, repita o comando com --next-token até ter todas as páginas.

    Terminal
    aws sesv2 list-suppressed-destinations --output json \
      | jq -r '(["email","type","reason"] | @csv),
               (.SuppressedDestinationSummaries[] | [.EmailAddress, "recipient", ("ses " + .Reason)] | @csv)' \
      > suppressions.csv

    Isso grava um CSV com as colunas email,type,reason. Todas as linhas usam o tipo recipient, que bloqueia envios pela API, por SMTP e de campanhas para o endereço.

  2. Se você mantém a sua própria lista de bounces e reclamações vindos das notificações do SNS, adicione esses endereços também.

  3. Em Email APISuppressions, selecione Import e envie o arquivo. Cada arquivo pode ter até 10.000 linhas e no máximo 8 MB. Os duplicados são ignorados.

Consulte Gerenciar supressões.

Migrar os templates

Obtenha cada template com aws sesv2 get-email-template --template-name <name> e depois importe o HTML dele em Email MarketingTemplates ou crie-o com a API de templates. Use o nome do template no SES como alias no Emailit, se ele se encaixar no formato de alias: letras minúsculas, números, - e _.

Os templates do SES usam tags no estilo Handlebars. O Temple cobre as partes mais comuns:

Amazon SES Emailit (Temple)
{{name}}, {{user.name}} Igual
{{#if plan}}…{{else}}…{{/if}} Igual
{{#each items}}…{{/each}} Não suportado. Renderize a lista no seu código e passe-a como uma única variável.
TemplateData como string JSON variables como objeto JSON
Sem valor padrão embutido {{name|"there"}} adiciona um valor alternativo

O Temple nunca escapa HTML, então escape o que vier dos usuários antes de passar. Consulte Temple.

Alterar o DNS

Adicione o seu domínio em Email APIDomains e publique os registros do Emailit. Eles usam nomes próprios (emailit._domainkey, emailit.<domain> e, opcionalmente, go e inbound), então não entram em conflito com os CNAMEs do Easy DKIM do SES nem com um subdomínio de custom MAIL FROM. Mantenha o seu registro DMARC. Consulte Registros DNS.

Depois da virada, remova os CNAMEs de DKIM do SES e os registros do custom MAIL FROM e exclua as identities no SES. Se você recebe e-mails com receipt rules do SES, mude antes para um subdomínio de recebimento do Emailit.

Próximos passos

Esta página foi útil?

Obrigado pelo feedback.

Obrigado, lemos todas as mensagens.