Vai al contenuto
Docs

Guida

Passa da Postmark a Emailit. Fai corrispondere server, message streams e token, converti i campi API, cambia le impostazioni SMTP e sposta webhook, soppressioni e template.

Aggiornato il 1 ott 2026

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

Postmark Emailit
Account Account
Server Workspace, oppure un solo workspace con più domini di invio
Server API token Chiave API Sending Only, facoltativamente limitata a un dominio
Account API token Chiave API Full Access
Transactional message stream L’API email e l’SMTP relay
Broadcast message stream Campagne inviate alle liste, oppure l’API con un tuo header List-Unsubscribe
Inbound message stream Email in entrata su un sottodominio come inbound.acme.com
Sender signatures e domini Domini di invio. Le sender signatures per un singolo indirizzo non sono disponibili.
Templates e layouts Template con un alias e versioni. Non ci sono layout.
Webhook per stream Webhook per workspace
Suppressions per stream Una lista di soppressione per workspace
Activity Email APIEmails e Email APILogs
Tag e Metadata meta

Per tenere separate la reputazione transazionale e quella di marketing, invia da domini o sottodomini diversi, come mail.acme.com per le ricevute e news.acme.com per le newsletter.

Aggiorna le chiamate API

POST /email di Postmark con un X-Postmark-Server-Token diventa POST /v2/emails con un bearer token. I nomi dei campi passano da PascalCase a snake_case:

Prima: Postmark
curl https://api.postmarkapp.com/email \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Postmark-Server-Token: $POSTMARK_SERVER_TOKEN" \
  -d '{
    "From": "Acme <hello@acme.com>",
    "To": "ada@example.com",
    "Subject": "Your receipt",
    "TextBody": "Thanks for your order.",
    "HtmlBody": "<p>Thanks for your order.</p>",
    "MessageStream": "outbound"
  }'
Dopo: Emailit
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@acme.com>",
    "to": "ada@example.com",
    "subject": "Your receipt",
    "text": "Thanks for your order.",
    "html": "<p>Thanks for your order.</p>"
  }'
Postmark Emailit
Header X-Postmark-Server-Token Authorization: Bearer secret_…
From from
To, Cc, Bcc (stringhe separate da virgole) to, cc, bcc come stringa o array di massimo 50 ciascuno
ReplyTo reply_to
Subject subject
HtmlBody, TextBody html, text
Headers: [{ "Name": "…", "Value": "…" }] headers: { "Name": "Value" }
Metadata, Tag meta, restituito negli eventi webhook
TrackOpens, TrackLinks tracking: { "loads": true, "clicks": true }
Attachments[] con Name, Content, ContentType, ContentID attachments[] con filename, content, content_type, content_id
MessageStream Non serve
POST /email/withTemplate con TemplateAlias o TemplateId e TemplateModel Lo stesso POST /v2/emails con template (un alias o un ID) e variables
Risposta con MessageID ed ErrorCode: 0 200 con id (em_…), status: "accepted" e ids per destinatario. Gli errori usano i codici di stato HTTP.

Emailit non ha un endpoint batch. Invia una richiesta per messaggio, ciascuna con un massimo di 50 destinatari, e aggiungi un header Idempotency-Key così i nuovi tentativi sono sicuri. Vedi Invia un’email.

Cambia le impostazioni SMTP

Impostazione Postmark Emailit
Host smtp.postmarkapp.com smtp.emailit.com
Porta 587, 2525 o 25 587 (STARTTLS), 465 (TLS), 2525, 2587 o 25
Nome utente Il tuo server API token emailit
Password Il tuo server API token La tua chiave API di Emailit

Emailit non legge gli header X-PM-* come X-PM-Message-Stream o X-PM-Tag. Rimuovili e imposta invece il tracciamento sul dominio. Vedi Impostazioni SMTP.

Fai corrispondere gli eventi webhook

Webhook di Postmark Evento Emailit
Delivery email.delivered
Bounce, tipi di hard bounce email.bounced
Bounce, tipi soft o transient email.attempted mentre Emailit ritenta, poi email.bounced se tutti i nuovi tentativi non riescono
Spam complaint email.complained
Open email.loaded
Click email.clicked
Subscription change email.unsubscribed per le email delle campagne, e suppression.created o suppression.deleted per le soppressioni che aggiungi o rimuovi con l’API
Inbound email.received, poi recupera il contenuto con GET /emails/{id}

Emailit invia anche email.accepted quando l’API accetta un’email, evento per cui Postmark non ha un webhook.

Cambia il formato della richiesta:

  • Postmark invia un record per richiesta e ne indica il nome in RecordType. Emailit invia 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 di MessageID. I tuoi valori meta sono in data.object.meta.
  • I webhook di Postmark di solito sono protetti con credenziali di autenticazione basic nell’URL. Emailit invece firma ogni richiesta: 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 suppressions di ogni message stream di Postmark da cui invii, dalla pagina delle suppressions dello stream o con l’API suppressions dump. Includi hard bounce, segnalazioni di spam e soppressioni manuali.

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

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

    Usa il tipo recipient per gli indirizzi che non devono mai ricevere email. Blocca gli invii via API, SMTP e campagne. Per le persone che hanno solo rinunciato alle tue comunicazioni broadcast, usa il tipo unsubscribe, che ferma le campagne ma lascia passare le email transazionali.

  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

Copia l’HTML di ogni template da Postmark, compreso il suo layout, poi importalo in Email MarketingTemplates o crealo con l’API dei template. Emailit non ha layout, quindi unisci layout e contenuto in un unico template. Usa lo stesso alias che usavi in Postmark, così le modifiche al codice restano minime.

I template di Postmark usano Mustachio. Temple copre i valori semplici e le condizioni:

Postmark (Mustachio) Emailit (Temple)
{{name}} {{name}}
{{company.name}} {{company.name}}
Sezioni {{#company}}…{{/company}} {{#if company}}…{{/if}}, con percorsi completi come {{company.name}} all’interno
Sezioni invertite {{^name}}…{{/name}} {{#if name}}{{else}}…{{/if}}
{{#each items}}…{{/each}} Non supportato. Genera l’elenco nel tuo codice e passalo come un’unica variabile.
TemplateModel variables

Temple non applica mai l’escape all’HTML, quindi esegui l’escape dell’input degli utenti prima di passarlo. Un valore mancante diventa una stringa vuota, a meno che tu non aggiunga un valore predefinito, come {{name|"there"}}. 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 il record DKIM di Postmark né con il suo CNAME di return path pm-bounces. Mantieni il record DMARC. Dopo il passaggio, rimuovi i record di Postmark. Vedi Record DNS.

Se elabori la posta in entrata con Postmark, spostala su un sottodominio di ricezione di Emailit e aggiorna gli indirizzi che la tua app comunica. Vedi Configura le email in entrata.

Passaggi successivi

Questa pagina ti è stata utile?

Grazie del feedback.

Grazie, leggiamo ogni messaggio.