Zum Inhalt springen
Doku

Leitfaden

Von Postmark migrieren

Wechseln Sie von Postmark zu Emailit. Server, Message Streams und Tokens zuordnen, API-Felder umwandeln, SMTP-Einstellungen austauschen und Webhooks, Sperrungen und Vorlagen umziehen.

Aktualisiert am 1. Okt. 2026

Diese Anleitung ordnet Konzepte, API-Aufrufe, Webhooks, Sperrungen und Vorlagen von Postmark ihren Entsprechungen in Emailit zu. Lesen Sie zuerst Zu Emailit migrieren für die allgemeine Reihenfolge und den parallelen Betrieb beider Anbieter.

Konzepte

Postmark Emailit
Account Konto
Server Workspace oder ein Workspace mit mehreren Versanddomains
Server API token API-Schlüssel mit Sending Only, optional auf eine Domain beschränkt
Account API token API-Schlüssel mit Full Access
Transaktionaler Message Stream Die E-Mail-API und das SMTP-Relay
Broadcast-Message-Stream Kampagnen an Kontaktlisten oder die API mit eigenem Header List-Unsubscribe
Inbound-Message-Stream Eingehende E-Mails auf einer Subdomain wie inbound.acme.com
Sender Signatures und Domains Versanddomains. Sender Signatures für einzelne Adressen gibt es nicht.
Vorlagen und Layouts Vorlagen mit Alias und Versionen. Layouts gibt es nicht.
Webhooks pro Stream Webhooks pro Workspace
Sperrungen pro Stream Eine Sperrliste pro Workspace
Activity Email APIEmails und Email APILogs
Tag und Metadata meta

Um die Reputation von transaktionalen und Marketing-E-Mails getrennt zu halten, senden Sie sie von unterschiedlichen Domains oder Subdomains, etwa mail.acme.com für Belege und news.acme.com für Newsletter.

API-Aufrufe anpassen

Aus POST /email von Postmark mit einem X-Postmark-Server-Token wird POST /v2/emails mit einem Bearer-Token. Die Feldnamen wechseln von PascalCase zu snake_case:

Before: 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"
  }'
After: 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 (durch Kommas getrennte Strings) to, cc, bcc als String oder Array mit jeweils bis zu 50
ReplyTo reply_to
Subject subject
HtmlBody, TextBody html, text
Headers: [{ "Name": "…", "Value": "…" }] headers: { "Name": "Value" }
Metadata, Tag meta, in Webhook-Events zurückgegeben
TrackOpens, TrackLinks tracking: { "loads": true, "clicks": true }
Attachments[] mit Name, Content, ContentType, ContentID attachments[] mit filename, content, content_type, content_id
MessageStream Nicht nötig
POST /email/withTemplate mit TemplateAlias oder TemplateId und TemplateModel Dasselbe POST /v2/emails mit template (ein Alias oder eine ID) und variables
Antwort mit MessageID und ErrorCode: 0 200 mit id (em_…), status: "accepted" und ids pro Empfänger. Fehler verwenden HTTP-Statuscodes.

Emailit hat keinen Batch-Endpunkt. Senden Sie eine Anfrage pro Nachricht, jeweils mit bis zu 50 Empfängern, und fügen Sie einen Header Idempotency-Key hinzu, damit Wiederholungen sicher sind. Siehe E-Mail senden.

SMTP-Einstellungen umstellen

Einstellung Postmark Emailit
Host smtp.postmarkapp.com smtp.emailit.com
Port 587, 2525 oder 25 587 (STARTTLS), 465 (TLS), 2525, 2587 oder 25
Benutzername Ihr Server API Token emailit
Passwort Ihr Server API Token Ihr Emailit-API-Schlüssel

Emailit liest keine X-PM-*-Header wie X-PM-Message-Stream oder X-PM-Tag. Entfernen Sie sie und legen Sie das Tracking stattdessen bei der Domain fest. Siehe SMTP-Einstellungen.

Webhook-Events zuordnen

Postmark-Webhook Emailit-Event
Delivery email.delivered
Bounce, Typen für Hard Bounces email.bounced
Bounce, Typen für Soft Bounces oder vorübergehende Fehler email.attempted, während Emailit es erneut versucht, dann email.bounced, wenn alle Wiederholungen fehlschlagen
Spam Complaint email.complained
Open email.loaded
Click email.clicked
Subscription Change email.unsubscribed für Kampagnen-E-Mails sowie suppression.created oder suppression.deleted für Sperrungen, die Sie per API hinzufügen oder entfernen
Inbound email.received, dann den Inhalt mit GET /emails/{id} abrufen

Emailit sendet außerdem email.accepted, wenn die API eine E-Mail annimmt. Dafür hat Postmark keinen Webhook.

Das Anfrageformat ändert sich:

  • Postmark sendet einen Datensatz pro Anfrage und benennt ihn in RecordType. Emailit sendet ein JSON-Array mit bis zu 100 Events, mit dem Namen in type und der E-Mail in data.object.
  • Verwenden Sie data.object.id, die em_-ID aus der Antwort auf den Versand, statt MessageID. Ihre meta-Werte stehen in data.object.meta.
  • Postmark-Webhooks werden meist mit Basic-Authentication-Zugangsdaten in der URL geschützt. Emailit signiert stattdessen jede Anfrage: Verifizieren Sie X-Emailit-Signature anhand von X-Emailit-Timestamp und Ihrem whsec_-Secret. Siehe Anfragesignatur.
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);
}

Sperrungen umziehen

  1. Exportieren Sie die Sperrungen jedes Message Streams von Postmark, über den Sie senden, auf der Suppressions-Seite des Streams oder mit der Suppressions-Dump-API. Nehmen Sie Hard Bounces, Spam-Beschwerden und manuelle Sperrungen mit.

  2. Erstellen Sie eine CSV-Datei mit den Spalten email,type,reason:

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

    Verwenden Sie den Typ recipient für Adressen, die nie E-Mails erhalten dürfen. Er blockiert Versände per API, SMTP und Kampagne. Für Personen, die sich nur von Ihren Broadcasts abgemeldet haben, verwenden Sie den Typ unsubscribe, der Kampagnen stoppt, transaktionale E-Mails aber weiter durchlässt.

  3. Wählen Sie unter Email APISuppressions die Option Import und laden Sie die Datei hoch. Jede Datei darf bis zu 10.000 Zeilen haben und höchstens 8 MB groß sein. Duplikate werden übersprungen.

Siehe Sperrungen verwalten.

Vorlagen umziehen

Kopieren Sie das HTML jeder Vorlage aus Postmark einschließlich ihres Layouts und importieren Sie es dann unter Email MarketingTemplates oder erstellen Sie die Vorlage mit der Vorlagen-API. Emailit hat keine Layouts, führen Sie Layout und Inhalt daher in einer Vorlage zusammen. Verwenden Sie denselben Alias wie in Postmark, damit Ihre Codeänderungen klein bleiben.

Postmark-Vorlagen verwenden Mustachio. Temple deckt einfache Werte und Bedingungen ab:

Postmark (Mustachio) Emailit (Temple)
{{name}} {{name}}
{{company.name}} {{company.name}}
Abschnitte {{#company}}…{{/company}} {{#if company}}…{{/if}}, darin mit vollständigen Pfaden wie {{company.name}}
Invertierte Abschnitte {{^name}}…{{/name}} {{#if name}}{{else}}…{{/if}}
{{#each items}}…{{/each}} Nicht unterstützt. Rendern Sie die Liste in Ihrem Code und übergeben Sie sie als eine Variable.
TemplateModel variables

Temple maskiert HTML nie. Maskieren Sie Benutzereingaben daher, bevor Sie sie übergeben. Ein fehlender Wert wird als leerer String dargestellt, sofern Sie keinen Standardwert hinzufügen, etwa {{name|"there"}}. Siehe Temple.

DNS ändern

Fügen Sie Ihre Domain unter Email APIDomains hinzu und legen Sie die Einträge von Emailit an. Sie verwenden eigene Namen (emailit._domainkey, emailit.<domain> und optional go und inbound) und kollidieren daher weder mit dem DKIM-Eintrag von Postmark noch mit dessen Return-Path-CNAME pm-bounces. Behalten Sie Ihren DMARC-Eintrag. Entfernen Sie nach der Umstellung die Einträge von Postmark. Siehe DNS-Einträge.

Wenn Sie eingehende E-Mails mit Postmark verarbeiten, verlagern Sie das auf eine Inbound-Subdomain von Emailit und aktualisieren Sie die Adressen, die Ihre App herausgibt. Siehe Eingehende E-Mails einrichten.

Nächste Schritte

War diese Seite hilfreich?

Danke für Ihr Feedback.

Danke, wir lesen jede Nachricht.