Vai al contenuto
Docs

Guida

Passa da Mailgun a Emailit. Fai corrispondere domini, chiavi e routes, converti in JSON le chiamate API con form encoding e sposta SMTP, webhook, soppressioni e template.

Aggiornato il 1 ott 2026

Questa guida fa corrispondere concetti, chiamate API, webhook, soppressioni e template di Mailgun 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

Mailgun Emailit
Account e subaccounts Account e workspace. Ogni workspace ha i propri domini, chiavi, membri e crediti.
Dominio, con un proprio percorso API /v3/<domain>/… Dominio di invio. C’è un solo endpoint di invio, ed Emailit ricava il dominio dall’indirizzo from.
Private API key Chiave API Full Access
Domain sending key Chiave API Sending Only limitata a un dominio
Credenziali SMTP per dominio La tua chiave API, usata come password SMTP
Template per dominio, con versioni Template per workspace, con un alias e versioni
Webhook per dominio Webhook per workspace
Routes Email in entrata con il webhook email.received, oppure l’automazione Forward received email
Suppressions per dominio: bounces, unsubscribes, complaints Una lista di soppressione per workspace
Mailing lists Liste
Tags e custom variables meta
Logs ed events Email APIEmails, Email APIEvents e Email APILogs
Email validation Verifica email

Aggiorna le chiamate API

POST /v3/<domain>/messages di Mailgun accetta campi di un modulo con autenticazione basic. POST /v2/emails di Emailit accetta JSON con un bearer token:

Prima: Mailgun
curl -s --user "api:$MAILGUN_API_KEY" \
  https://api.mailgun.net/v3/mg.acme.com/messages \
  -F from='Acme <hello@mg.acme.com>' \
  -F to='ada@example.com' \
  -F subject='Your receipt' \
  -F text='Thanks for your order.' \
  --form-string html='<p>Thanks for your order.</p>'
Dopo: Emailit
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@mg.acme.com>",
    "to": "ada@example.com",
    "subject": "Your receipt",
    "text": "Thanks for your order.",
    "html": "<p>Thanks for your order.</p>"
  }'
Mailgun Emailit
Autenticazione basic api:<key> Authorization: Bearer secret_…
Campi multipart/form-data Un corpo JSON
from, subject, text, html Gli stessi nomi
to, cc, bcc (ripetuti o separati da virgole) to, cc, bcc come stringa o array di massimo 50 ciascuno
h:Reply-To reply_to
h:X-My-Header headers: { "X-My-Header": "…" }
v:order-id, h:X-Mailgun-Variables meta: { "order-id": "…" }, restituito negli eventi webhook
template e t:variables template (un ID o un alias) e variables
attachment, inline (caricamento di file) attachments[] con content in base64 o un url, più content_type. Aggiungi content_id per le immagini inline.
o:deliverytime (data RFC 2822) scheduled_at (ISO 8601, timestamp Unix o inglese semplice)
o:tracking, o:tracking-opens, o:tracking-clicks tracking: { "loads": true, "clicks": true }
o:tag meta
o:testmode Non disponibile
recipient-variables (invio in batch) Non disponibile. Invia una richiesta per destinatario con le sue variables.
Risposta { "id": "<…>", "message": "Queued. Thank you." } 200 con id (em_…), message_id, status: "accepted" e ids per destinatario

Se inviavi da un sottodominio come mg.acme.com, aggiungi esattamente quel sottodominio in Emailit. I sottodomini vengono verificati separatamente dal dominio principale. Gli host API UE e USA di Mailgun corrispondono entrambi all’unico endpoint di Emailit. Vedi Invia un’email.

Cambia le impostazioni SMTP

Impostazione Mailgun Emailit
Host smtp.mailgun.org, oppure l’host UE smtp.emailit.com
Porta 587, 465, 2525 o 25 587 (STARTTLS), 465 (TLS), 2525, 2587 o 25
Nome utente Il tuo login SMTP, ad esempio postmaster@mg.acme.com emailit
Password La tua password SMTP La tua chiave API di Emailit

Emailit non legge gli header X-Mailgun-*. Rimuovili e imposta invece il tracciamento sul dominio. Vedi Impostazioni SMTP.

Fai corrispondere gli eventi webhook

Evento Mailgun Evento Emailit
accepted email.accepted (solo API)
delivered email.delivered
failed con severity temporary email.attempted
failed con severity permanent email.bounced
opened email.loaded
clicked email.clicked
complained email.complained
unsubscribed email.unsubscribed, solo per le email delle campagne
Route che inoltra a un URL email.received, poi recupera il contenuto con GET /emails/{id}

Cambia il formato della richiesta:

  • Mailgun invia un evento per richiesta, con i dettagli in event-data. Emailit invia un array JSON di massimo 100 eventi. Esegui un ciclo sull’array.
  • Il nome dell’evento è in type, e l’email è in data.object. Usa data.object.id, l’ID em_ della risposta all’invio, per associare gli eventi ai messaggi. I tuoi valori meta sono in data.object.meta.
  • Mailgun firma un timestamp e un token all’interno del corpo. Emailit firma l’intero corpo grezzo: 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 le liste Bounces, Complaints e Unsubscribes di ogni dominio Mailgun da cui invii, dal pannello di controllo o con l’API delle suppressions (/v3/<domain>/bounces, /complaints e /unsubscribes).

  2. Crea un unico CSV con le colonne email,type,reason:

    CSV
    email,type,reason
    old-address@example.com,recipient,mailgun bounce
    angry@example.com,recipient,mailgun complaint

    Usa il tipo recipient per gli indirizzi che non devono mai ricevere email. Blocca gli invii via API, SMTP e campagne. I tipi bounce, complaint e unsubscribe fermano solo le campagne.

  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.

Emailit ha una sola lista di soppressione per workspace, quindi gli indirizzi di tutti i tuoi domini Mailgun finiscono nella stessa lista. Non esiste una allowlist. Vedi Gestisci le soppressioni.

Sposta i template

Copia l’HTML di ogni template da Mailgun, poi importalo in Email MarketingTemplates o crealo con l’API dei template. Assegnagli un alias e invialo con "template": "<alias>" e variables.

I template di Mailgun usano Handlebars. Temple copre le parti più comuni:

Mailgun (Handlebars) Emailit (Temple)
{{first_name}} {{first_name}}
{{{html_block}}} {{html_block}}. Temple non applica mai l’escape all’HTML, quindi esegui tu l’escape dell’input degli utenti.
{{#if plan}}…{{else}}…{{/if}} Uguale
{{#unless plan}}…{{/unless}} {{#if plan}}{{else}}…{{/if}}
{{#each items}}…{{/each}} Non supportato. Genera l’elenco nel tuo codice e passalo come un’unica variabile.
{{#equal plan "pro"}}…{{/equal}} Non supportato. Passa un booleano come is_pro e usa {{#if is_pro}}.
Nessun valore predefinito integrato {{first_name|"there"}} aggiunge un valore di riserva

Vedi Temple e Importa ed esporta i template.

Cambia i DNS

Aggiungi ogni 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 il record DKIM di Mailgun né con il suo CNAME di tracciamento email.<domain>. Per Emailit non devi modificare il record SPF del dominio principale. Mantieni il record DMARC. Vedi Record DNS.

Dopo il passaggio, rimuovi i record DKIM e di tracciamento di Mailgun, e togli include:mailgun.org dal record SPF. Se ricevi posta tramite le routes di Mailgun, mantieni i suoi record MX finché non hai spostato quel traffico sulle email in entrata di Emailit, che ricevono su un sottodominio come inbound.acme.com.

Passaggi successivi

Questa pagina ti è stata utile?

Grazie del feedback.

Grazie, leggiamo ogni messaggio.