Zum Inhalt springen
Doku

Leitfaden

Von SendGrid migrieren

Wechseln Sie von SendGrid zu Emailit. Konzepte, API-Felder, SMTP-Einstellungen und Namen im Event Webhook zuordnen, dann Sperrungen, Dynamic Templates und DNS übernehmen.

Aktualisiert am 1. Okt. 2026

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

Konzepte

SendGrid Emailit
Konto und Subuser Konto und Workspaces. Jeder Workspace hat eigene Domains, Schlüssel, Mitglieder und Credits.
API-Schlüssel mit Berechtigungen API-Schlüssel: Full Access oder Sending Only, optional auf eine Domain beschränkt
Domain Authentication Versanddomain mit Einträgen für SPF, DKIM und Return-Path
Link Branding Tracking-Subdomain, ein CNAME wie go.acme.com
Single Sender Verification Nicht verfügbar. Jede Absenderadresse muss auf einer verifizierten Domain liegen.
Dynamic Templates Vorlagen mit Alias und Versionen, gerendert mit Temple
Event Webhook Webhooks
Inbound Parse Eingehende E-Mails
Suppressions Sperrungen
Unsubscribe Groups Nicht verfügbar. Verwenden Sie Kontaktlisten und Abmeldelinks in Kampagnen.
Marketing-Kontakte und -Listen Kontakte und Kontaktlisten
Single Sends Kampagnen
Email Activity Email APIEmails und Email APILogs
Categories und Custom Args meta
Dedizierte IPs und IP-Pools Dedizierte IPs auf Anfrage
Validierung von E-Mail-Adressen E-Mail-Verifizierung

API-Aufrufe anpassen

Aus POST /v3/mail/send von SendGrid wird POST /v2/emails. Die Anfrage ist flacher: Es gibt keine personalizations, und Adressen sind einfache Strings.

Before: SendGrid
curl https://api.sendgrid.com/v3/mail/send \
  -H "Authorization: Bearer $SENDGRID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "personalizations": [{ "to": [{ "email": "ada@example.com" }] }],
    "from": { "email": "hello@acme.com", "name": "Acme" },
    "subject": "Your receipt",
    "content": [
      { "type": "text/plain", "value": "Thanks for your order." },
      { "type": "text/html", "value": "<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@acme.com>",
    "to": "ada@example.com",
    "subject": "Your receipt",
    "text": "Thanks for your order.",
    "html": "<p>Thanks for your order.</p>"
  }'
SendGrid Emailit
Authorization: Bearer SG.… Authorization: Bearer secret_…
from: { email, name } from: "Name <email>"
personalizations[].to[] to, ein String oder ein Array mit bis zu 50 Adressen
personalizations[].cc[], bcc[] cc, bcc
reply_to: { email } reply_to
subject subject
content[] mit text/plain und text/html text und html
template_id template, eine Vorlagen-ID oder ein Alias
personalizations[].dynamic_template_data variables
attachments[] mit content, filename, type, content_id attachments[] mit content, filename, content_type, content_id oder einer url statt content
headers headers
custom_args, categories meta, ein Objekt aus String-Werten, das in Webhook-Events zurückgegeben wird
send_at (Unix-Zeit) scheduled_at, das dieselbe Unix-Zeit, ISO 8601 oder englischen Klartext akzeptiert
tracking_settings.open_tracking und click_tracking tracking: { "loads": true, "clicks": true }
asm (Unsubscribe Groups) Nicht verfügbar
202 Accepted mit einem Header X-Message-Id 200 mit einem JSON-Body: id, status: "accepted" und ids mit einer ID pro Empfänger

Jeder Empfänger in einer Anfrage an Emailit wird zu einer eigenen E-Mail mit eigener ID. Um unterschiedlichen Personen unterschiedliche Variablen zu senden, was SendGrid mit mehreren personalizations erledigt, senden Sie eine Anfrage pro Empfänger. Fügen Sie einen Header Idempotency-Key hinzu, damit Wiederholungen sicher sind. Siehe E-Mail senden.

SMTP-Einstellungen umstellen

Einstellung SendGrid Emailit
Host smtp.sendgrid.net smtp.emailit.com
Port 587, 465, 2525 oder 25 587 (STARTTLS), 465 (TLS), 2525, 2587 oder 25
Benutzername apikey emailit
Passwort Ihr SendGrid-API-Schlüssel Ihr Emailit-API-Schlüssel

Emailit liest den Header X-SMTPAPI nicht. Entfernen Sie ihn und legen Sie das Tracking stattdessen bei der Domain fest. Siehe SMTP-Einstellungen.

Webhook-Events zuordnen

SendGrid-Event Emailit-Event
processed email.accepted (nur API)
deferred email.attempted
delivered email.delivered
bounce email.bounced
dropped email.suppressed, wenn der Empfänger auf der Sperrliste steht
open email.loaded
click email.clicked
spamreport email.complained
unsubscribe, group_unsubscribe email.unsubscribed, nur für Kampagnen-E-Mails
POST von Inbound Parse email.received, dann den Inhalt mit GET /emails/{id} abrufen

Wie SendGrid sendet Emailit ein JSON-Array von Events. Die Felder unterscheiden sich:

  • 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) statt sg_message_id und data.object.to statt email.
  • Ihre meta-Werte kommen in data.object.meta zurück.
  • Emailit signiert Anfragen mit HMAC-SHA256 statt mit dem öffentlichen ECDSA-Schlüssel von SendGrid. Verifizieren Sie X-Emailit-Signature mit 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 in SendGrid Ihre Bounces, Spam Reports, Invalid Emails und Global Unsubscribes, über die Suppression-Seiten oder mit den API-Endpunkten /v3/suppression/*. Blocks sind meist vorübergehend, Sie können sie also weglassen.

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

    CSV
    email,type,reason
    old-address@example.com,recipient,sendgrid bounce
    angry@example.com,recipient,sendgrid spam report

    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, teilen Sie größere Listen also auf. Duplikate werden übersprungen.

Importieren Sie Personen, die sich über Gruppen von Marketing-E-Mails abgemeldet haben, als Kontakte mit gesetztem unsubscribed, statt sie für alle E-Mails zu sperren. Siehe Sperrungen verwalten.

Vorlagen umziehen

Exportieren Sie das HTML jedes Dynamic Template aus SendGrid und importieren Sie es dann unter Email MarketingTemplates oder erstellen Sie die Vorlage mit der Vorlagen-API. Geben Sie jeder Vorlage einen Alias, etwa receipt, und senden Sie sie mit "template": "receipt".

Beide verwenden doppelte geschweifte Klammern, aber Temple ist kleiner als Handlebars:

SendGrid (Handlebars) Emailit (Temple)
{{first_name}} {{first_name}}
{{{html_block}}} {{html_block}}. Temple maskiert HTML nie, maskieren Sie Benutzereingaben also selbst.
{{insert name "default=there"}} {{name|"there"}}
{{#if plan}}…{{else}}…{{/if}} Identisch
{{#each items}}…{{/each}} Nicht unterstützt. Rendern Sie die Liste in Ihrem Code und übergeben Sie sie als eine Variable.
{{#equals plan "pro"}}…{{/equals}} Nicht unterstützt. Übergeben Sie einen Boolean wie is_pro und verwenden Sie {{#if is_pro}}.

Siehe Temple und Vorlagen importieren und exportieren.

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 nicht mit den CNAMEs für Domain Authentication oder Link Branding von SendGrid. Behalten Sie Ihren DMARC-Eintrag. Entfernen Sie nach der Umstellung die CNAMEs von SendGrid. Siehe DNS-Einträge.

Wenn Sie Inbound Parse genutzt haben, richten Sie den MX-Eintrag Ihres Parse-Hostnamens stattdessen auf Emailit. Um denselben Hostnamen zu behalten, etwa parse.acme.com, setzen Sie den inbound_key der Domain per API auf parse. Siehe Eingehende E-Mails einrichten.

Nächste Schritte

War diese Seite hilfreich?

Danke für Ihr Feedback.

Danke, wir lesen jede Nachricht.