Zum Inhalt springen
Doku

Leitfaden

Von Mailgun migrieren

Wechseln Sie von Mailgun zu Emailit. Domains, Schlüssel und Routes zuordnen, formularkodierte API-Aufrufe in JSON umwandeln und SMTP, Webhooks, Sperrungen und Vorlagen umziehen.

Aktualisiert am 1. Okt. 2026

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

Konzepte

Mailgun Emailit
Konto und Unterkonten Konto und Workspaces. Jeder Workspace hat eigene Domains, Schlüssel, Mitglieder und Credits.
Domain mit eigenem API-Pfad /v3/<domain>/… Versanddomain. Es gibt einen einzigen Sende-Endpunkt, und Emailit entnimmt die Domain der Adresse in from.
Private API key API-Schlüssel mit Full Access
Domain sending key API-Schlüssel mit Sending Only, auf eine Domain beschränkt
SMTP-Zugangsdaten pro Domain Ihr API-Schlüssel, als SMTP-Passwort verwendet
Vorlagen pro Domain, mit Versionen Vorlagen pro Workspace, mit Alias und Versionen
Webhooks pro Domain Webhooks pro Workspace
Routes Eingehende E-Mails mit dem Webhook email.received oder die Automatisierung Forward received email
Sperrungen pro Domain: Bounces, Abmeldungen, Beschwerden Eine Sperrliste pro Workspace
Mailinglisten Kontaktlisten
Tags und eigene Variablen meta
Logs und Events Email APIEmails, Email APIEvents und Email APILogs
E-Mail-Validierung E-Mail-Verifizierung

API-Aufrufe anpassen

POST /v3/<domain>/messages von Mailgun nimmt Formularfelder mit Basic Authentication an. POST /v2/emails von Emailit nimmt JSON mit einem Bearer-Token an:

Before: 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>'
After: 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
Basic Auth api:<key> Authorization: Bearer secret_…
Felder in multipart/form-data Ein JSON-Body
from, subject, text, html Dieselben Namen
to, cc, bcc (wiederholt oder durch Kommas getrennt) to, cc, bcc als String oder Array mit jeweils bis zu 50
h:Reply-To reply_to
h:X-My-Header headers: { "X-My-Header": "…" }
v:order-id, h:X-Mailgun-Variables meta: { "order-id": "…" }, in Webhook-Events zurückgegeben
template und t:variables template (eine ID oder ein Alias) und variables
attachment, inline (Datei-Uploads) attachments[] mit Base64-kodiertem content oder einer url, dazu content_type. Fügen Sie für eingebettete Bilder content_id hinzu.
o:deliverytime (Datum nach RFC 2822) scheduled_at (ISO 8601, Unix-Zeit oder englischer Klartext)
o:tracking, o:tracking-opens, o:tracking-clicks tracking: { "loads": true, "clicks": true }
o:tag meta
o:testmode Nicht verfügbar
recipient-variables (Batch-Versand) Nicht verfügbar. Senden Sie pro Empfänger eine Anfrage mit eigenen variables.
Antwort { "id": "<…>", "message": "Queued. Thank you." } 200 mit id (em_…), message_id, status: "accepted" und ids pro Empfänger

Wenn Sie von einer Subdomain wie mg.acme.com gesendet haben, fügen Sie genau diese Subdomain in Emailit hinzu. Subdomains werden getrennt von der übergeordneten Domain verifiziert. Die EU- und US-API-Hosts von Mailgun entsprechen beide dem einen Endpunkt von Emailit. Siehe E-Mail senden.

SMTP-Einstellungen umstellen

Einstellung Mailgun Emailit
Host smtp.mailgun.org oder der EU-Host smtp.emailit.com
Port 587, 465, 2525 oder 25 587 (STARTTLS), 465 (TLS), 2525, 2587 oder 25
Benutzername Ihr SMTP-Login, etwa postmaster@mg.acme.com emailit
Passwort Ihr SMTP-Passwort Ihr Emailit-API-Schlüssel

Emailit liest keine X-Mailgun-*-Header. Entfernen Sie sie und legen Sie das Tracking stattdessen bei der Domain fest. Siehe SMTP-Einstellungen.

Webhook-Events zuordnen

Mailgun-Event Emailit-Event
accepted email.accepted (nur API)
delivered email.delivered
failed mit Schweregrad temporary email.attempted
failed mit Schweregrad permanent email.bounced
opened email.loaded
clicked email.clicked
complained email.complained
unsubscribed email.unsubscribed, nur für Kampagnen-E-Mails
Route, die an eine URL weiterleitet email.received, dann den Inhalt mit GET /emails/{id} abrufen

Das Anfrageformat ändert sich:

  • Mailgun sendet ein Event pro Anfrage, mit den Details in event-data. Emailit sendet ein JSON-Array mit bis zu 100 Events. Iterieren Sie über das Array.
  • Der Event-Name steht in type und die E-Mail in data.object. Verwenden Sie data.object.id, die em_-ID aus der Antwort auf den Versand, um Events Nachrichten zuzuordnen. Ihre meta-Werte stehen in data.object.meta.
  • Mailgun signiert einen Zeitstempel und ein Token im Body. Emailit signiert den gesamten unveränderten Body: 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 Listen Bounces, Complaints und Unsubscribes jeder Mailgun-Domain, von der Sie senden, im Control Panel oder mit der Suppressions-API (/v3/<domain>/bounces, /complaints und /unsubscribes).

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

    CSV
    email,type,reason
    old-address@example.com,recipient,mailgun bounce
    angry@example.com,recipient,mailgun 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. Die Typen bounce, complaint und unsubscribe stoppen nur Kampagnen.

  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.

Emailit hat eine Sperrliste pro Workspace, daher kommen die Adressen aller Ihrer Mailgun-Domains in dieselbe Liste. Eine Allowlist gibt es nicht. Siehe Sperrungen verwalten.

Vorlagen umziehen

Kopieren Sie das HTML jeder Vorlage aus Mailgun und importieren Sie es dann unter Email MarketingTemplates oder erstellen Sie die Vorlage mit der Vorlagen-API. Geben Sie ihr einen Alias und senden Sie sie mit "template": "<alias>" und variables.

Mailgun-Vorlagen verwenden Handlebars. Temple deckt die üblichen Teile ab:

Mailgun (Handlebars) Emailit (Temple)
{{first_name}} {{first_name}}
{{{html_block}}} {{html_block}}. Temple maskiert HTML nie, maskieren Sie Benutzereingaben also selbst.
{{#if plan}}…{{else}}…{{/if}} Identisch
{{#unless plan}}…{{/unless}} {{#if plan}}{{else}}…{{/if}}
{{#each items}}…{{/each}} Nicht unterstützt. Rendern Sie die Liste in Ihrem Code und übergeben Sie sie als eine Variable.
{{#equal plan "pro"}}…{{/equal}} Nicht unterstützt. Übergeben Sie einen Boolean wie is_pro und verwenden Sie {{#if is_pro}}.
Kein eingebauter Standardwert {{first_name|"there"}} fügt einen Ersatzwert hinzu

Siehe Temple und Vorlagen importieren und exportieren.

DNS ändern

Fügen Sie jede 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 Mailgun noch mit dessen Tracking-CNAME email.<domain>. Ihren SPF-Eintrag auf der Hauptdomain müssen Sie für Emailit nicht ändern. Behalten Sie Ihren DMARC-Eintrag. Siehe DNS-Einträge.

Entfernen Sie nach der Umstellung die DKIM- und Tracking-Einträge von Mailgun und entfernen Sie include:mailgun.org aus Ihrem SPF-Eintrag. Wenn Sie E-Mails über Routes von Mailgun empfangen, behalten Sie dessen MX-Einträge, bis Sie diesen Verkehr auf eingehende E-Mails bei Emailit umgestellt haben, die auf einer Subdomain wie inbound.acme.com empfangen.

Nächste Schritte

War diese Seite hilfreich?

Danke für Ihr Feedback.

Danke, wir lesen jede Nachricht.