Saltar al contenido
Docs

Guía

Pasa de Amazon SES a Emailit. Equivalencias de identidades, sandbox y cuotas, sustitución de las llamadas del SDK y de las credenciales SMTP, y conversión de los eventos de SNS en webhooks firmados.

Actualizado el 1 oct 2026

Esta guía relaciona los conceptos, las llamadas a la API, las notificaciones de eventos, las direcciones bloqueadas y las plantillas de Amazon SES con sus equivalentes en Emailit. Lee primero Migrar a Emailit para conocer el orden general y cómo usar los dos proveedores en paralelo.

Conceptos

Amazon SES Emailit
Cuenta de AWS en una región Espacio de trabajo
Identidades verificadas: dominios y direcciones de email Dominios de envío. Las identidades de una sola dirección de email no están disponibles.
Registros CNAME de Easy DKIM Un registro TXT de DKIM, emailit._domainkey
Dominio MAIL FROM personalizado El return-path emailit.<your domain>, que tienen todos los dominios
Sandbox y solicitud de acceso de producción Modo sandbox y acceso de producción. En modo sandbox puedes enviar a las direcciones de email de las cuentas de los miembros del espacio de trabajo.
Cuota de envío y velocidad máxima de envío Límites de envío: emails por segundo y al día, que se renuevan a medianoche UTC
Credenciales de IAM y firma SigV4 Claves de API en una cabecera Authorization: Bearer
Credenciales SMTP Tu clave de API, usada como contraseña SMTP
Configuration sets y destinos de eventos (SNS, EventBridge, Firehose) Webhooks que envían JSON firmado a tu endpoint HTTPS
Lista de suppressions de la cuenta Lista de direcciones bloqueadas del espacio de trabajo
Plantillas de email Plantillas con un alias y versiones
Receipt rules Emails entrantes con el webhook email.received
Email tags meta
IP dedicadas IP dedicadas bajo solicitud
Listas de contactos Contactos, listas de contactos y campañas

Actualizar las llamadas a la API

Las llamadas a SES se firman con tus credenciales de AWS, así que normalmente las haces con un SDK de AWS. Con Emailit, envías una petición JSON con una clave de API, o usas el SDK de Emailit para tu lenguaje. En 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>' },
      },
    },
  },
}));
Después: 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)
Credenciales de AWS y firma SigV4 Authorization: Bearer secret_…
FromEmailAddress from
Destination.ToAddresses, CcAddresses, BccAddresses to, cc, bcc, hasta 50 cada uno
ReplyToAddresses reply_to
Content.Simple.Subject.Data subject
Content.Simple.Body.Html.Data, Text.Data html, text
Content.Template.TemplateName template, un alias o ID
Content.Template.TemplateData (una cadena JSON) variables (un objeto JSON)
Content.Raw (un mensaje MIME completo) Envía el mensaje MIME a través del SMTP relay, o vuelve a construirlo con html, text y attachments
EmailTags meta, que se devuelve en los eventos de webhook
ConfigurationSetName No es necesario. Los eventos van a tus webhooks, y el seguimiento se configura por dominio o por email con tracking.
Respuesta MessageId 200 con id (em_…), message_id, status: "accepted" e ids por destinatario

Emailit también admite la programación con scheduled_at y los reintentos seguros con una cabecera Idempotency-Key, que SES no ofrece al enviar. Consulta Enviar un email.

Cambiar la configuración SMTP

Ajuste Amazon SES Emailit
Host email-smtp.<region>.amazonaws.com smtp.emailit.com
Puerto 587, 2587 o 25 (STARTTLS), 465 o 2465 (TLS) 587, 2587, 2525 o 25 (STARTTLS), 465 (TLS)
Usuario Tu usuario SMTP de SES emailit
Contraseña Tu contraseña SMTP de SES Tu clave de API de Emailit

Emailit no lee las cabeceras de SES, como X-SES-CONFIGURATION-SET. Elimínalas. Consulta Configuración SMTP.

Equivalencias de las notificaciones de eventos

SES publica los eventos a través de configuration sets en SNS, EventBridge o Firehose. Emailit los envía directamente a tu endpoint HTTPS como webhooks, así que no hay ningún tema al que suscribirse ni que confirmar.

Tipo de evento de SES Evento de Emailit
Send email.accepted (solo API)
Delivery email.delivered
DeliveryDelay email.attempted
Bounce con bounceType Permanent email.bounced
Bounce con bounceType Transient email.attempted mientras Emailit reintenta, y después email.bounced si fallan todos los reintentos
Complaint email.complained
Open email.loaded
Click email.clicked
Subscription email.unsubscribed, solo para los emails de campaña
Reject, Rendering Failure Sin equivalente directo. Los errores de la petición, como una plantilla que no existe, los devuelve la API de inmediato, y los mensajes que Emailit no va a entregar reciben el estado held.
Receipt rule con una acción de SNS o Lambda email.received; después, obtén el contenido con GET /emails/{id}

El payload también cambia:

  • Cada petición de Emailit es un array JSON de hasta 100 eventos, con el nombre en type y el email en data.object.
  • Usa data.object.id, el ID em_ de la respuesta de envío, en lugar del messageId de SES. Tus valores de meta están en data.object.meta.
  • En lugar de comprobar las firmas de los mensajes de SNS, verifica X-Emailit-Signature con X-Emailit-Timestamp y tu secreto whsec_. Consulta Verificar las firmas de los webhooks.
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);
}

Trasladar las direcciones bloqueadas

  1. Exporta la lista de suppressions de la cuenta de SES con la AWS CLI. Si la salida incluye un NextToken, repite el comando con --next-token hasta tener todas las páginas.

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

    Esto genera un CSV con las columnas email,type,reason. Todas las filas usan el tipo recipient, que bloquea los envíos por API, por SMTP y de campañas a la dirección.

  2. Si mantienes tu propia lista de rebotes y quejas a partir de las notificaciones de SNS, añade también esas direcciones.

  3. En Email APISuppressions, selecciona Import y sube el archivo. Cada archivo puede tener hasta 10.000 filas y ocupar como máximo 8 MB. Los duplicados se omiten.

Consulta Gestionar las direcciones bloqueadas.

Trasladar las plantillas

Obtén cada plantilla con aws sesv2 get-email-template --template-name <name> y después importa su HTML en Email MarketingTemplates o crea la plantilla con la API de plantillas. Usa el nombre de la plantilla de SES como alias en Emailit, si se ajusta al formato de los alias: letras minúsculas, números, - y _.

Las plantillas de SES usan etiquetas al estilo de Handlebars. Temple cubre lo más habitual:

Amazon SES Emailit (Temple)
{{name}}, {{user.name}} Igual
{{#if plan}}…{{else}}…{{/if}} Igual
{{#each items}}…{{/each}} No compatible. Genera la lista en tu código y pásala como una sola variable.
TemplateData como cadena JSON variables como objeto JSON
Sin valor por defecto integrado {{name|"there"}} añade un valor alternativo

Temple nunca escapa el HTML, así que escapa los datos que introducen los usuarios antes de pasarlos. Consulta Lenguaje de plantillas Temple.

Cambiar los DNS

Añade tu dominio en Email APIDomains y publica los registros de Emailit. Usan sus propios nombres (emailit._domainkey, emailit.<domain> y, opcionalmente, go e inbound), así que no entran en conflicto con los CNAME de Easy DKIM de SES ni con un subdominio MAIL FROM personalizado. Conserva tu registro DMARC. Consulta Registros DNS de los dominios de envío.

Después del cambio definitivo, elimina los CNAME de DKIM de SES y los registros del MAIL FROM personalizado, y elimina las identidades en SES. Si recibes correo con las receipt rules de SES, trasládalo antes a un subdominio de entrada de Emailit.

Próximos pasos

¿Te ha resultado útil esta página?

Gracias por tu opinión.

Gracias. Leemos todos los mensajes.