Für Entwickler

API-first E-Mail-Versand: welcher Dienst passt, wenn Ihr Produkt aus dem Code heraus sendet

Von Mara Levin · Aktualisiert am 7. Oktober 2026 · Preise und Dokumentation an diesem Tag geprüft

Die kurze Antwort

Schreiben Sie TypeScript und liegen Ihre Vorlagen als React-Komponenten im Repository, beginnen Sie mit Resend: 0 $ für 3.000 E-Mails im Monat, 20 $ für 50.000. Sollen kritische Systemmails sauber von allem anderen getrennt laufen, schauen Sie sich Postmark an. Wer ohnehin auf AWS baut oder viel versendet, kommt mit Amazon SES auf 0,16 $ je 1.000 E-Mails. Mailgun und SendGrid sind sinnvoll, wenn Sie mehr API-Fläche brauchen, etwa Routen, Adressprüfung oder eine EU-Region bei Mailgun. Marketing-Automatisierung mit visuellen Workflows ist nicht Thema dieser Seite; dafür gibt es die Übersichten zu transaktionalem Versand und Marketing-Automatisierung.

Die Dienste im Überblick

Dienst Kostenloser Tarif Erster bezahlter Tarif Webhook-Schutz
Resend3.000 im Monat, 100 pro Tag, 3 DomainsPro: 20 $ für 50.000Signatur über Svix
Postmark100 im Monat, ohne ÜberschreitungBasic: 15 $ ab 10.000Basic Auth und IP-Freigabe
Mailgun100 pro Tag, 1 eigene DomainBasic: 15 $ für 10.000Signatur mit Signing-Key
Amazon SESFreier Tarif für 6 Monate nach KontoerstellungEssentials: 0,16 $ je 1.000Ereignisse über SNS
SendGrid100 pro Tag während 60 TagenEssentials: ab 19,95 $ für 50.000 bis 100.000Signierter Event-Webhook
SMTP2GO1.000 im Monat, 200 pro TagStarter: 15 $ für 10.000Nicht geprüft
SparkPost1.000 im Monat, 50 pro TagStartup: ab 15 $ für 50.000 bis 100.000Nicht geprüft
MandrillBis zu 500 kostenlose Sendungen für neue Nutzer20 $ je Block von 25.000 E-MailsNicht geprüft

Preise aus den verlinkten Preisseiten, abgelesen am 7. Oktober 2026, in US-Dollar ohne Steuern. Zu SMTP2GO, SparkPost und Mandrill habe ich nur die Preisseiten gelesen und nicht deren Webhook-Dokumentation, deshalb steht dort kein Schutzverfahren.

Was Sie bei drei Volumen tatsächlich zahlen

Der Einstiegspreis täuscht, weil jeder Dienst zusätzliche E-Mails anders berechnet. Die Rechnungen unten nutzen die Zahlen der Preisseiten und enthalten weder Steuern noch Zusätze wie eine eigene IP-Adresse.

Dienst 10.000 im Monat 50.000 im Monat 200.000 im Monat
Resend (Pro)20 $20 $160 $ (Scale, Schieberegler)
Postmark (Basic)15 $55 $ (Schieberegler)Kein Stopp bei 200.000; Schieberegler prüfen (125.000: 115 $)
Amazon SES (Essentials)10 × 0,16 $ = 1,60 $50 × 0,16 $ = 8 $200 × 0,16 $ = 32 $
SMTP2GO (Starter)15 $15 $ + 40 × 1,20 $ = 63 $15 $ + 190 × 1,20 $ = 243 $
MailgunBasic: 15 $Foundation: 35 $Scale deckt 100.000 für 90 $ ab; den Aufpreis darüber nennt die Preisseite nicht, hier ist ein Angebot nötig

Daraus ergeben sich drei Lehren. Erstens kosten die meisten Dienste bei 10.000 E-Mails zwischen 15 $ und 20 $, die Entscheidung fällt dann über Handhabung und nicht über den Preis. Zweitens bleibt Resend mit seinem Tarif Pro bis 50.000 bei 20 $ (bei 100.000 zeigt der Schieberegler 35 $) und nennt für 200.000 E-Mails 160 $ im Tarif Scale, während Postmark Basic am Schieberegler 55 $ für 50.000 und 115 $ für 125.000 ausweist; für 200.000 hat Postmark keinen Stopp, den Wert lesen Sie auf der Preisseite ab, statt ihn aus dem Aufpreis von 1,80 $ je 1.000 hochzurechnen. Drittens trennt sich Amazon SES bei höheren Volumen deutlich von allen anderen, bringt aber den Aufwand der Eigenverwaltung mit. Bei Postmark kosten Pro und Platform an jedem gelesenen Stopp mehr als Basic (bei 50.000: 60,50 $ und 66 $, Stand 7. Oktober 2026); sie bringen unter anderem längere Aufbewahrung und ab 300.000 E-Mails die Möglichkeit einer dedizierten IP, die Stufen lesen Sie auf der Preisseite ab. Die Staffeln bei SparkPost und Mandrill lesen Sie dort nach, wenn Sie mit Millionen von E-Mails planen.

Preisseite von Resend, aufgenommen im Oktober 2026
Preisseite von Resend, Stand 7. Okt. 2026. Quelle: https://resend.com/pricing
Preisseite von Postmark, aufgenommen im Oktober 2026
Preisseite von Postmark, Stand 7. Okt. 2026. Quelle: https://postmarkapp.com/pricing

Der erste Aufruf bei zwei Diensten

Bei Postmark ist der Versand ein einzelner POST an den Endpunkt /email, authentifiziert über den Header X-Postmark-Server-Token. Jeder Postmark-Server hat laut Dokumentation einen eigenen Token, sodass Sie den Zugriff je Anwendung trennen können. Das Feld MessageStream wählt den Versandstrom; ohne Angabe nimmt Postmark den Standard-Transaktionsstream outbound. Das Beispiel entspricht dem curl-Aufruf der Doku:

curl "https://api.postmarkapp.com/email" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Postmark-Server-Token: server token" \
  -d '{
  "From": "sender@example.com",
  "To": "receiver@example.com",
  "Subject": "Postmark test",
  "TextBody": "Hello dear Postmark user.",
  "HtmlBody": "<html><body><strong>Hello</strong> dear Postmark user.</body></html>",
  "MessageStream": "outbound"
}'

Wer viele Nachrichten auf einmal schickt, nutzt den Endpunkt /email/batch, der nach Postmarks Beschreibung bis zu 500 Nachrichten in einem Aufruf annimmt. Bei Resend ist das Gegenstück das SDK-Beispiel der Referenz Send Email, ergänzt um den Idempotency-Key aus der Seite zu den Idempotency Keys:

import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

await resend.emails.send(
  {
    from: 'Acme <onboarding@resend.dev>',
    to: ['delivered@resend.dev'],
    subject: 'hello world',
    html: '<p>it works!</p>',
  },
  {
    idempotencyKey: 'welcome-user/123456789',
  },
);

Idempotenz: Wiederholungen ohne Doppelversand

Jede Warteschlange wiederholt irgendwann eine Anfrage, und ein Kunde, der zweimal denselben Bestätigungslink erhält, schreibt dem Support. Resend löst das mit einem Schlüssel: Laut Dokumentation prüft der Dienst, ob in den letzten 24 Stunden bereits eine E-Mail mit demselben Schlüssel versendet wurde, und liefert bei einer Wiederholung dieselbe Antwort, ohne erneut zu senden. Der Schlüssel darf bis zu 256 Zeichen lang sein, und Resend empfiehlt ein Muster wie <Ereignis>/<Objekt-ID>, im Beispiel welcome-user/123456789. Er gilt für POST /emails und POST /emails/batch, reist im HTTP-Header Idempotency-Key und wird im SDK als Option idempotencyKey übergeben; bei SMTP gibt es den Header Resend-Idempotency-Key.

In der Postmark-Dokumentation zum Versand habe ich keinen vergleichbaren Mechanismus gefunden. Dort schützen Sie sich, indem Sie vor einer Wiederholung in Ihrer eigenen Datenbank nachsehen, ob zu dem Ereignis bereits eine MessageID gespeichert ist. Dasselbe Prinzip gilt für Webhooks, worauf die Postmark-Doku in ihrem Handler-Beispiel selbst hinweist.

Webhooks: was sich von Dienst zu Dienst ändert

Ein Webhook-Handler für den Betrieb tut drei Dinge: Er prüft die Herkunft der Anfrage, antwortet schnell mit 200 und verarbeitet das Ereignis danach idempotent, weil Wiederholungen Dubletten erzeugen. Beim ersten Punkt gehen die Dienste getrennte Wege.

  • Resend signiert die Anfragen und bietet in den SDKs eine Prüffunktion. Laut Dokumentation ist der Payload der rohe String-Body der Anfrage; parsen Sie das JSON und serialisieren es neu, passt die Signatur nicht mehr.
  • Postmark unterstützt laut Webhook-Übersicht keine HMAC-Signaturen. Empfohlen werden HTTP Basic Auth in der Webhook-URL (https://benutzer:passwort@example.com/webhook) und eine Freigabeliste für die IP-Bereiche von Postmark. Beim Anlegen testet Postmark Ihren Endpunkt je Ereignistyp und erwartet ein 200.
  • Mailgun signiert jede Anfrage mit dem kontoweiten Webhook-Signing-Key und liefert token, timestamp und signature mit, wie die Seite Securing Webhooks beschreibt. Der Schlüssel ist weder Ihr API-Key noch der Sending-Key der Domain.
  • SendGrid kennt den signierten Event-Webhook: Der Dienst erzeugt ein Schlüsselpaar, signiert mit dem privaten Schlüssel und schickt die Signatur im Header X-Twilio-Email-Event-Webhook-Signature; Sie prüfen mit dem öffentlichen Schlüssel (Dokumentation).
  • Amazon SES liefert Ereignisse nicht direkt aus. Es kann nach Angaben der AWS-Dokumentation über eine Benachrichtigungs-E-Mail, über ein SNS-Thema oder über Event Publishing melden. Das sind mehr Bausteine, passt aber, wenn Ihre Pipeline ohnehin in AWS läuft.

Testen, ohne echte Postfächer zu belasten

Resend dokumentiert Adressen unter resend.dev, etwa delivered@resend.dev, mit Varianten für Bounce, Spam-Markierung und unterdrückte Adressen; über ein Label nach dem Pluszeichen (delivered+signup@resend.dev) trennen Sie Testläufe. Die Seite zu Testmails rät ausdrücklich davon ab, an erfundene Adressen zu senden oder einen eigenen Fake-SMTP-Server zu betreiben, weil das den Domainruf beschädigen kann. Der Sandbox-Modus bei Postmark liefert Testnachrichten nicht an echte Empfänger aus, rechnet sie aber laut Dokumentation auf Ihr monatliches Sendevolumen an. Mailtrap bietet einen Email Sandbox, der als Fake-SMTP-Server alle Testmails abfängt; die SDKs schalten laut Dokumentation über ein sandbox-Flag und eine Inbox-ID zwischen Test und Live um. Mailtrap listet für den Versand 0 $ für 4.000 E-Mails im Monat (150 pro Tag), 15 $ für 10.000 und 85 $ für 100.000; Sandbox und Marketing werden separat bepreist.

EU-Region und Datenablage

Wer personenbezogene Daten aus der EU versendet, fragt nach dem Speicherort. Zwei Anbieter beschreiben das in ihrer Dokumentation klar. Mailgun erlaubt, neue Sendedomains in einer EU-Umgebung anzulegen (Basis-URL api.eu.mailgun.net); laut API-Übersicht verlassen Nachrichtendaten die Region nicht, in der sie verarbeitet werden, während Kontodaten, API-Schlüssel und Domainnamen global liegen. Bei Resend wählen Sie beim Hinzufügen einer Domain die Region, etwa eu-west-1 in Irland. Die Seite zur Regionswahl hält aber fest, dass die Wahl nur bestimmt, von wo versendet wird: Metadaten, Logs und API-Einträge liegen unabhängig davon in den USA. Für Amazon SES, SendGrid und Postmark habe ich dazu keine Aussage gelesen und mache deshalb keine; fragen Sie Ihre Datenschutzbeauftragte nach den Auftragsverarbeitungsverträgen der Anbieter.

Welcher Dienst für welche Lage

Next.js- oder React-Produkt mit Vorlagen im Repository

Resend. Die Vorlage ist eine typisierte Komponente, der Versand ein Aufruf, beides wandert im selben Pull Request durch die Prüfung. Wie sich Komponenten-Frameworks gegeneinander schlagen, zeigt der Vergleich MJML gegen React Email.

Kritische Systemmails: Zugang, Belege, Warnungen

Postmark, mit dem Vorbehalt des hohen Aufpreises über 10.000 E-Mails. Die Trennung in Message Streams hilft besonders, wenn zusätzlich Newsletter laufen; wie Sie beides sauber auseinanderhalten, steht im Artikel Transaktionale und Marketing-E-Mails.

Hohes Volumen und AWS-Erfahrung im Team

Amazon SES. Sie übernehmen Bounce-Verarbeitung und Beschwerden selbst, der Support kommt von AWS und nicht von einem Produktteam, dafür kostet eine Viertelmillion E-Mails 40 $. Mehr zu großen Mengen auf der Seite E-Mail für hohes Volumen.

Mehr API-Fläche als nur Senden

Mailgun oder SendGrid. Mailgun listet auf der Preisseite unter anderem Inbound-Routing und E-Mail-Validierung, SendGrid hat daneben Marketing Campaigns mit einem Gratisplan bis 2.000 Kontakte. Gegenüberstellungen: SendGrid gegen Mailgun und Postmark gegen SendGrid.

Wechsel von SMTP auf die API, ohne alles umzuschreiben

  1. Kapseln Sie den Anbieter hinter einer eigenen Funktion. Wenn der Wechsel nur eine Datei berührt, bindet Sie die Entscheidung von heute nicht.
  2. Verifizieren Sie Ihre echte Domain in der ersten Woche. Ein Dienst, der mit der Testdomain funktioniert, kann an Ihren DNS-Einträgen scheitern.
  3. Speichern Sie die Nachrichten-ID aus der Antwort beim Datensatz des Nutzers. Fragt der Support nach einer bestimmten Mail, brauchen Sie sie.
  4. Lösen Sie einen Bounce und eine Beschwerde absichtlich aus und prüfen Sie, dass Ihre Anwendung die Ereignisse empfängt und die Adresse künftig überspringt.
  5. Lassen Sie alte und neue Strecke eine Weile parallel laufen und stellen Sie Nachrichtenart für Nachrichtenart um, beginnend mit der, die am wenigsten Schaden anrichten kann. Weitere Optionen für Entwickler bietet die Seite E-Mail-Tools für Entwickler.

Häufige Fragen

Was macht einen E-Mail-Dienst API-first?

Dass sich Senden, Statusabfrage, Domainverwaltung und Ereignisse über HTTP-Aufrufe abwickeln lassen und das Dashboard nur ein Zusatz ist. Praktisch heißt das: Sie können Konfiguration versionieren, den Versand in der Testumgebung automatisiert prüfen und Rückmeldungen wie Bounces per Webhook in Ihre Anwendung holen, statt sie manuell zu exportieren.

Resend oder Postmark für ein kleines Produkt?

Liegen Ihre Vorlagen als React-Komponenten im Repository und wollen Sie wiederholte Anfragen über einen Idempotency-Key absichern, ist Resend der kürzere Weg. Geht es vor allem um Systemmails, die mit Newslettern nichts zu tun haben sollen, passt Postmarks Trennung in Message Streams besser. Bei 10.000 E-Mails im Monat liegen beide mit 15 $ und 20 $ so dicht beieinander, dass die Preisfrage selten entscheidet.

Wie prüfe ich, dass ein Webhook wirklich vom Anbieter kommt?

Das unterscheidet sich je Dienst. Resend signiert über Svix und erwartet die Prüfung gegen den unveränderten Roh-Body; Mailgun signiert mit einem kontoweiten Webhook-Signing-Key; SendGrid bietet einen signierten Event-Webhook mit öffentlichem Schlüssel. Postmark signiert nicht und empfiehlt stattdessen HTTP Basic Auth in der URL plus eine Freigabeliste für die IP-Bereiche des Dienstes.

Lohnt sich Amazon SES für ein Team von zwei Personen?

Nur, wenn Sie ohnehin in AWS arbeiten oder sehr viel versenden. Mit 0,16 $ je 1.000 E-Mails im Tarif Essentials ist SES pro Nachricht der günstigste Dienst in dieser Übersicht. Dafür richten Sie Domain-Identität, Ereignisse über SNS und die Behandlung von Bounces selbst ein. Kostet Sie das mehr als einen Nachmittag pro Quartal, ist der Preisvorteil gegenüber Resend oder Mailgun schnell aufgebraucht.

Kann ich den Versand testen, ohne echte Personen anzuschreiben?

Ja, jeder der genannten Dienste kennt einen Weg. Resend stellt Adressen unter resend.dev bereit, die Zustellung, Bounce, Spam-Markierung oder Unterdrückung simulieren. Postmark hat einen Sandbox-Modus für Server, dessen Nachrichten aber trotzdem auf das Monatsvolumen zählen. Mailtrap fängt Testmails in einem Sandbox-Postfach ab, statt sie auszuliefern.