Vai al contenuto
Docs

Guida

Passa da Amazon SES a Emailit. Fai corrispondere identità, sandbox e quote, sostituisci le chiamate SDK e le credenziali SMTP e trasforma gli eventi SNS in webhook firmati.

Aggiornato il 1 ott 2026

Questa guida fa corrispondere concetti, chiamate API, notifiche di eventi, soppressioni e template di Amazon SES ai loro equivalenti in Emailit. Leggi prima Passa a Emailit per l’ordine generale e per sapere come usare entrambi i provider in parallelo.

Concetti

Amazon SES Emailit
Account AWS in una regione Workspace
Verified identities: domini e indirizzi email Domini di invio. Le identità costituite da un singolo indirizzo email non sono disponibili.
Record CNAME di Easy DKIM Un solo record TXT DKIM, emailit._domainkey
Custom MAIL FROM domain Il return path emailit.<your domain>, che ogni dominio ha
Sandbox e richiesta di production access Modalità sandbox e accesso alla produzione. In modalità sandbox puoi inviare agli indirizzi email degli account dei membri del workspace.
Sending quota e maximum send rate Limiti di invio: email al secondo e al giorno, azzerati a mezzanotte UTC
Credenziali IAM e firma SigV4 Chiavi API in un header Authorization: Bearer
Credenziali SMTP La tua chiave API, usata come password SMTP
Configuration sets ed event destinations (SNS, EventBridge, Firehose) Webhook che inviano JSON firmato al tuo endpoint HTTPS
Account-level suppression list La lista di soppressione del workspace
Email templates Template con un alias e versioni
Receipt rules Email in entrata con il webhook email.received
Email tags meta
Dedicated IPs IP dedicati su richiesta
Contact lists Contatti, liste e campagne

Aggiorna le chiamate API

Le chiamate SES sono firmate con le tue credenziali AWS, quindi di solito le fai tramite un SDK AWS. Con Emailit invii una richiesta JSON con una chiave API, oppure usi l’SDK di Emailit per il tuo linguaggio. In Node.js:

Prima: 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>' },
      },
    },
  },
}));
Dopo: 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)
Credenziali AWS e firma SigV4 Authorization: Bearer secret_…
FromEmailAddress from
Destination.ToAddresses, CcAddresses, BccAddresses to, cc, bcc, fino a 50 ciascuno
ReplyToAddresses reply_to
Content.Simple.Subject.Data subject
Content.Simple.Body.Html.Data, Text.Data html, text
Content.Template.TemplateName template, un alias o un ID
Content.Template.TemplateData (una stringa JSON) variables (un oggetto JSON)
Content.Raw (un messaggio MIME completo) Invia il messaggio MIME tramite l’SMTP relay, oppure ricostruiscilo con html, text e attachments
EmailTags meta, restituito negli eventi webhook
ConfigurationSetName Non serve. Gli eventi vanno ai tuoi webhook, e il tracciamento si imposta per dominio o per singola email con tracking.
MessageId nella risposta 200 con id (em_…), message_id, status: "accepted" e ids per destinatario

Emailit supporta anche la programmazione con scheduled_at e i nuovi tentativi sicuri con un header Idempotency-Key, che SES non offre per l’invio. Vedi Invia un’email.

Cambia le impostazioni SMTP

Impostazione Amazon SES Emailit
Host email-smtp.<region>.amazonaws.com smtp.emailit.com
Porta 587, 2587 o 25 (STARTTLS), 465 o 2465 (TLS) 587, 2587, 2525 o 25 (STARTTLS), 465 (TLS)
Nome utente Il tuo nome utente SMTP di SES emailit
Password La tua password SMTP di SES La tua chiave API di Emailit

Emailit non legge gli header di SES come X-SES-CONFIGURATION-SET. Rimuovili. Vedi Impostazioni SMTP.

Fai corrispondere le notifiche di eventi

SES pubblica gli eventi tramite i configuration sets su SNS, EventBridge o Firehose. Emailit li invia direttamente al tuo endpoint HTTPS come webhook, quindi non c’è nessun topic da sottoscrivere o confermare.

Tipo di evento SES Evento Emailit
Send email.accepted (solo API)
Delivery email.delivered
DeliveryDelay email.attempted
Bounce con bounceType Permanent email.bounced
Bounce con bounceType Transient email.attempted mentre Emailit ritenta, poi email.bounced se tutti i nuovi tentativi non riescono
Complaint email.complained
Open email.loaded
Click email.clicked
Subscription email.unsubscribed, solo per le email delle campagne
Reject, Rendering Failure Nessun equivalente diretto. Gli errori nella richiesta, come un template mancante, vengono restituiti subito dall’API, e i messaggi che Emailit non consegnerà ricevono lo stato held.
Receipt rule con un’azione SNS o Lambda email.received, poi recupera il contenuto con GET /emails/{id}

Cambia anche il payload:

  • Ogni richiesta di Emailit è un array JSON di massimo 100 eventi, con il nome in type e l’email in data.object.
  • Usa data.object.id, l’ID em_ della risposta all’invio, al posto del messageId di SES. I tuoi valori meta sono in data.object.meta.
  • Invece di controllare le firme dei messaggi SNS, verifica X-Emailit-Signature rispetto a X-Emailit-Timestamp e al tuo secret whsec_. Vedi Verifica le firme dei webhook.
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);
}

Sposta le soppressioni

  1. Esporta l’account-level suppression list di SES con la AWS CLI. Se l’output include un NextToken, ripeti il comando con --next-token finché non hai tutte le pagine.

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

    Questo comando scrive un CSV con le colonne email,type,reason. Ogni riga usa il tipo recipient, che blocca gli invii via API, SMTP e campagne all’indirizzo.

  2. Se tieni una tua lista di bounce e segnalazioni ricavata dalle notifiche SNS, aggiungi anche quegli indirizzi.

  3. In Email APISuppressions, seleziona Import e carica il file. Ogni file può avere fino a 10.000 righe e pesare al massimo 8 MB. I duplicati vengono saltati.

Vedi Gestisci le soppressioni.

Sposta i template

Recupera ogni template con aws sesv2 get-email-template --template-name <name>, poi importa il suo HTML in Email MarketingTemplates o crealo con l’API dei template. Usa il nome del template SES come alias in Emailit, se rispetta il formato degli alias: lettere minuscole, numeri, - e _.

I template SES usano tag in stile Handlebars. Temple copre le parti più comuni:

Amazon SES Emailit (Temple)
{{name}}, {{user.name}} Uguale
{{#if plan}}…{{else}}…{{/if}} Uguale
{{#each items}}…{{/each}} Non supportato. Genera l’elenco nel tuo codice e passalo come un’unica variabile.
TemplateData come stringa JSON variables come oggetto JSON
Nessun valore predefinito integrato {{name|"there"}} aggiunge un valore di riserva

Temple non applica mai l’escape all’HTML, quindi esegui l’escape dell’input degli utenti prima di passarlo. Vedi Temple.

Cambia i DNS

Aggiungi il dominio in Email APIDomains e pubblica i record di Emailit. Usano nomi propri (emailit._domainkey, emailit.<domain> e, facoltativamente, go e inbound), quindi non entrano in conflitto con i CNAME di Easy DKIM di SES né con un sottodominio Custom MAIL FROM. Mantieni il record DMARC. Vedi Record DNS.

Dopo il passaggio, rimuovi i CNAME DKIM di SES e i record Custom MAIL FROM, ed elimina le identità in SES. Se ricevi posta con le receipt rules di SES, spostala prima su un sottodominio di ricezione di Emailit.

Passaggi successivi

Questa pagina ti è stata utile?

Grazie del feedback.

Grazie, leggiamo ogni messaggio.