Leitfaden · Resend-E-Mail-API
Wie setzt ein Produktteam die Resend-E-Mail-API sicher um?
Setzen Sie die Resend-E-Mail-API hinter einem vertrauenswürdigen Server-Worker ein, nicht in Browser- oder Mobilcode. Verifizieren Sie die exakte Absenderdomain, erstellen Sie einen reinen Sende-API-Schlüssel, der nach Möglichkeit auf diese Domain beschränkt ist, speichern Sie einen genehmigten Ausgangsjob und übergeben Sie einen stabilen `Idempotency-Key` an `POST /emails`. Speichern Sie die zurückgegebene E-Mail-ID, verifizieren Sie Webhook-Signaturen vor dem Parsen, verarbeiten Sie Events idempotent und sperren Sie unsichere Empfänger. Halten Sie API-Annahme, Versand durch den Provider, Zustellung an den empfangenden Server und Inbox Placement als getrennte Zustände.
Die Produktoperation vor der Provider-Anfrage definieren
Beginnen Sie mit einer engen Anwendungsoperation wie Kontoverifizierung, Beleg, Sicherheitswarnung oder einer vom Empfänger angeforderten Benachrichtigung. Der öffentliche Produktendpunkt sollte Aufrufer, Mandant, Nachrichtenklasse, Absenderidentität, Empfänger und Template autorisieren, bevor überhaupt eine Resend-Payload existiert. Erlauben Sie einem Browser nicht, beliebige `from`, `to`, HTML oder Provider-Optionen einzureichen, während er eine wiederverwendbare Zugangsberechtigung hält. Legen Sie einen dauerhaften internen Ausgangsdatensatz an mit Anwendungs-Event-Schlüssel, Mandant, Template-Revision, genehmigtem Absender, Empfängermenge und aktuellem Status. Ein Worker kann diesen Datensatz in die Provider-Anfrage übersetzen. Diese Grenze hält API-Schlüssel und nicht vertrauenswürdigen Nachrichteninhalt von Clients fern, macht die Vermeidung von Duplikaten testbar und erlaubt dem Produkt, den Provider zu wechseln, ohne jeden Geschäftsablauf umzuschreiben. Trennen Sie im internen Modell transaktionale und einwilligungsabhängige Nachrichten, damit Präferenzen, Sperren und Incident-Entscheidungen explizit bleiben.
Die exakte Domain der From-Adresse verifizieren
Fügen Sie in Resend eine Domain hinzu, die Sie kontrollieren, und veröffentlichen Sie die für diese Domain angezeigten DNS-Einträge. Verifizieren Sie die tatsächliche Organisationsdomain oder Subdomain, die in der sichtbaren From-Adresse steht, statt anzunehmen, dass eine unbeteiligte übergeordnete Identität sie abdeckt. Prüfen Sie bestehende SPF- und DMARC-Richtlinien, bevor Sie DNS ändern, und legen Sie nie einen zweiten SPF-Eintrag für denselben Hostnamen an. Nutzen Sie eine zweckgebundene Absender-Subdomain, wenn Isolation, Zuständigkeit oder Migrationsanforderungen es rechtfertigen. Prüfen Sie nach der Verifizierungsmeldung des Dashboards eine empfangene Testnachricht, um die sichtbare From-Adresse, die DKIM-Signaturidentität, den Return-Path, die Authentifizierungsergebnisse und das Antwortverhalten zu bestätigen. Die Verifizierung durch den Provider belegt, dass eine konfigurierte Identität die Einrichtungsprüfung des Providers bestanden hat. Sie belegt weder die Einwilligung der Empfänger noch Annahme durch den empfangenden Server, Inbox Placement oder gute Reputation. Halten Sie DNS-Zuständigkeit und Änderungsverlauf außerhalb des Provider-Dashboards fest, damit Rotation und Rollback möglich bleiben.
Für jede Workload einen API-Schlüssel mit minimalen Rechten erstellen
Resend dokumentiert API-Schlüssel mit Zugriffsstufen und optionaler Domain-Beschränkung. Ein sendender Worker sollte einen Schlüssel verwenden, der auf Sendezugriff und, wenn die Architektur es zulässt, auf die eine Domain beschränkt ist, die diese Workload besitzt. Halten Sie Verwaltung, Domains, Webhooks und Kontoadministration unter getrennter Berechtigung. Erstellen Sie getrennte Schlüssel für Entwicklung, Staging und Produktion, damit eine niedrigere Umgebung weder mit der Produktividentität senden noch deren Limits verbrauchen kann. Speichern Sie jedes Geheimnis direkt in einem verwalteten Secret-Speicher, geben Sie es nur dem Serverprozess, der es braucht, und übergeben Sie es als Bearer-Authorization über HTTPS. Kopieren Sie den Schlüssel nicht in Versionsverwaltung, Build-Artefakte, Logs, Templates, Analytics, Tickets oder Prompts. Üben Sie die Rotation: Erstellen Sie einen gleichwertig eingeschränkten Ersatz, aktualisieren Sie den Worker, prüfen Sie kontrollierten Datenverkehr und Event-Korrelation und widerrufen Sie dann den alten Schlüssel. Lösen Sie bei unerwarteten Authentifizierungs- und Autorisierungsfehlern Alarme aus, denn sie können auf Ablauf, Widerruf, abweichenden Geltungsbereich oder ein offengelegtes Geheimnis hindeuten.
Einen dauerhaften Job und einen idempotenten Sendeversuch schaffen
Reservieren Sie den internen Ausgangsjob, bevor Sie Resend aufrufen. Leiten Sie einen Idempotenzwert aus einer stabilen Produktinformation wie Mandant, Operationstyp und unveränderlicher Anwendungs-Event-ID ab, nicht aus einem zufälligen Wiederholungsversuch. Senden Sie diesen Wert im Header `Idempotency-Key`. Resend dokumentiert derzeit, dass diese Schlüssel doppelte E-Mail-Anfragen verhindern, nach 24 Stunden verfallen und höchstens 256 Zeichen enthalten dürfen. Dieses Zeitfenster des Providers hilft, ist aber keine vollständige Duplikatgarantie auf Produktebene. Behalten Sie für längere Geschäftsabläufe eine Eindeutigkeitsbedingung auf dem internen Event-Schlüssel bei, serialisieren Sie Worker, die denselben Job beanspruchen könnten, und speichern Sie die E-Mail-ID des Providers aus einer erfolgreichen Anfrage. Macht ein Netzwerk-Timeout die Annahme mehrdeutig, halten Sie den Job in einem unbekannten Zustand und gleichen Sie ihn mit Provider-Logs oder -Events ab, bevor Sie erneut senden. Einen stabilen Schlüssel für dieselbe logische Operation wiederzuverwenden ist sicherer, als für jeden Transport-Wiederholungsversuch einen neuen zu erzeugen.
Die E-Mail-Anfrage bewusst aufbauen und validieren
Der Resend-Endpunkt zum Senden von E-Mails akzeptiert eine From-Adresse, Empfänger, Betreff und Nachrichteninhalt, mit dokumentierten Optionen wie Text, HTML, per React gerenderten Inhalten, Templates, Cc, Bcc, Reply-To, Headern, Anhängen, Tags und geplanter Zustellung. Legen Sie nur die Teilmenge offen, die das Produkt braucht. Validieren Sie Adresssyntax und Mandantenzugehörigkeit, begrenzen Sie die Anzahl von Empfängern und Anhängen unterhalb der Provider-Limits, weisen Sie Zeilenumbruch-Injection in Headern zurück und bauen Sie MIME-bezogene Inhalte über gepflegte Bibliotheken oder vertrauenswürdige Provider-Felder auf. Legen Sie keine Zugangsdaten, sensiblen personenbezogenen Daten oder uneingeschränkte Kundeneingaben in Tags oder Headern ab. Speichern Sie eine Template-Revision und bereinigte Variablen, statt den vollständigen Inhalt zu protokollieren. Ein interner Adapter sollte ein schmales Ergebnis liefern, etwa eine angenommene Provider-ID oder einen klassifizierten Fehler, und keine Details der Provider-Antwort in den Geschäftscode durchreichen. So lassen sich providerspezifische Feldnamen, SDK-Versionen oder Anfragelimits ändern, ohne den Vertrag der Produkt-Events anzufassen.
API-Antworten und Nutzungslimits vor Wiederholungen klassifizieren
Behandeln Sie die HTTP-Antwort als eine Beobachtung im Ablauf. Eine erfolgreiche Sendeantwort liefert eine E-Mail-Kennung, die Sie zusammen mit dem internen Job speichern sollten; sie belegt aber weder Annahme durch das Ziel noch Inbox Placement. Korrigieren Sie Validierungs-, Authentifizierungs-, Domain-, Berechtigungs- und Payload-Fehler, statt sie blind zu wiederholen. Resend dokumentiert Limits für API-Anfragen und liefert Rate-Limit- und Kontingent-Header, darunter Felder zu verbleibender Kapazität, Zeitpunkt des Zurücksetzens und Wiederholungsverzögerung; bei einer 429-Antwort sollten Sie das dokumentierte Intervall plus Jitter abwarten. Wiederholen Sie Transportfehler und geeignete Serverfehler mit exponentiellem Backoff, einer endlichen Zahl von Versuchen und demselben logischen Idempotenzschlüssel, solange dessen dokumentiertes Zeitfenster gilt. Mehrdeutige Fehler erfordern einen Abgleich, weil der Provider die E-Mail angenommen haben kann, auch wenn der Client die Antwort nicht erhalten hat. Lösen Sie Alarme aus, wenn sich wiederholte Fehler nach Domain, Template, Schlüssel oder Mandant häufen, halten Sie Zugangsdaten, vollständige Inhalte und unnötige Empfängerdaten aber aus den Betriebslogs heraus.
Webhook-Anfragen vor der Verarbeitung von Events authentifizieren
Konfigurieren Sie einen dedizierten HTTPS-Webhook-Endpunkt und behalten Sie den exakten rohen Anfrage-Body. Resend dokumentiert die Webhook-Signierung über Svix-kompatible Header und Signing Secrets. Verifizieren Sie Webhook-ID, Zeitstempel und Signatur über die unveränderte Payload, bevor Sie das JSON parsen oder neu serialisieren, und nutzen Sie den offiziellen Verifizierungsablauf oder eine gepflegte kompatible Bibliothek. Weisen Sie ungültige oder veraltete Anfragen zurück, begrenzen Sie die Anfragegröße und halten Sie das Signing Secret getrennt vom Sendeschlüssel. Speichern oder reihen Sie das Event nach der Authentifizierung dauerhaft ein, bevor Sie es bestätigen, damit ein Prozessabsturz Zustellnachweise nicht stillschweigend verwirft. Zustellsysteme können Webhooks wiederholen und duplizieren; verwenden Sie daher die Event-Kennung als Deduplizierungsschlüssel und machen Sie Zustandsübergänge monoton. Ein späteres oder doppeltes Event darf ein aussagekräftigeres Endergebnis nicht allein deshalb überschreiben, weil es zuletzt eintraf. Erfassen Sie Verifizierungsfehler und Event-Verzögerung als Betriebssignale, ohne rohe Nachrichteninhalte über die nötige Aufbewahrungsdauer hinaus zu speichern.
Provider-Events modellieren, ohne die Zustellung zu überzeichnen
Resend veröffentlicht benannte E-Mail-Event-Typen, darunter sent, delivered, delivery delayed, bounced, complained, failed, opened und clicked. Bilden Sie diese Provider-Namen auf ein internes Statusmodell ab, das den ursprünglichen Event-Typ, die E-Mail-ID des Providers, die Event-ID, den Zeitstempel, den Empfängerbezug und verfügbare Diagnosedaten enthält. Ein sent-Event beschreibt den Fortschritt beim Provider. Ein delivered-Event meldet die Zustellung nach der dokumentierten Event-Semantik von Resend, doch ein SMTP-Erfolg beim empfangenden System verrät weiterhin nicht den endgültigen Ordner des Empfängers. Öffnungen und Klicks sind Beobachtungen zum Engagement, kein Zustellnachweis, und Datenschutztechnik kann sie beeinflussen. Bounces, Beschwerden und dauerhafte Fehler sollten den Empfängersicherheitsstatus aktualisieren, bevor die nächste Sendeentscheidung fällt. Halten Sie den Verlauf der Provider-Events append-only und leiten Sie den für Nutzer sichtbaren Status aus expliziten Regeln ab. So bleiben Nachweise für den Support erhalten, und unsichere Wiederholungen nach einem Verantwortungsübergang oder einem negativen Signal des Empfängers werden vermieden.
Fehler- und Wiederherstellungspfade mit kontrollierten Empfängern testen
Verwenden Sie einen Schlüssel für eine Nicht-Produktivumgebung, eine kontrollierte verifizierte Subdomain und Postfächer, die dem Team gehören. Testen Sie Text- und HTML-Inhalt, Reply-To-Verhalten, Anhangslimits, stabile Idempotenzschlüssel und gespeicherte Provider-Kennungen. Reichen Sie denselben logischen Job zweimal ein und bestätigen Sie, dass Anwendung und Provider-Kontrollen kein ungewolltes Duplikat erzeugen. Spielen Sie folgende Fälle durch: ungültige Payload, falsche Domain, widerrufener Schlüssel, unzureichende Berechtigung, Rate-Limit, Transport-Timeout, Bounce, Beschwerde, Zustellverzögerung, doppelter Webhook, veränderter Signatur-Body, veralteter Webhook-Zeitstempel und Rotation des Signing Secrets. Bestätigen Sie, dass die Event-Aufnahme vor der Bestätigung dauerhaft ist und dass die Empfängersicherheit einen späteren Job blockiert. Testen Sie DNS-Rotation und das Entfernen des Providers, ohne unbeteiligte Einträge zu löschen. Dashboards sollten Sendefehler, Latenz, Webhook-Verifizierungsfehler, Event-Verzögerung, Bounces, Beschwerden und Abgleichswarteschlangen abdecken. Prüfen Sie beim Launch die aktuelle Resend-Dokumentation und die Kontoeinstellungen, weil sich Kontingente, Limits, Event-Felder und verfügbare Berechtigungen unabhängig vom bereitgestellten Anwendungscode ändern können.
Veröffentlichte API-Funktionen vor der Migration vergleichen
SendHQ veröffentlicht einen OpenAPI-3.1-Vertrag für seine auf den Workspace beschränkte E-Mail-API, einschließlich Versand über verifizierte Domains, eingehender E-Mails, gehosteter Templates, Zustell-Events und Sperrlisten. Vergleichen Sie vor der Migration einer Integration Anfrage-Bodies, Authentifizierung, Idempotenz, zurückgegebene Kennungen, Fehlerformen, Webhooks, Domainregeln und Sperrverhalten und validieren Sie sie dann mit Tests auf Feldebene. Nehmen Sie nicht aufgrund ähnlicher Endpunktnamen Kompatibilität an.
Häufig gestellte Fragen
Über welchen Endpunkt wird eine E-Mail mit Resend gesendet?
Resend dokumentiert `POST https://api.resend.com/emails` mit Bearer-Authorization. Rufen Sie ihn nur aus vertrauenswürdigem Servercode auf, nachdem Sie Produktoperation, Absenderdomain, Empfänger und Inhalt autorisiert haben.
Wie sollte ein Resend-API-Schlüssel eingeschränkt werden?
Verwenden Sie einen Schlüssel mit Sendezugriff und beschränken Sie ihn auf die Domain der Workload, wenn die dokumentierten Kontrollen zur Architektur passen. Halten Sie Produktions-, Nicht-Produktions- und administrative Berechtigungen auf getrennten, per Secret-Manager verwalteten Zugangsdaten.
Belegt eine erfolgreiche Resend-API-Antwort die Zustellung?
Nein. Sie dokumentiert die Annahme durch den Provider und liefert eine E-Mail-Kennung. Spätere authentifizierte Events können Fortschritt beim Provider und Zustellung beim empfangenden System melden, während das Inbox Placement eine getrennte Klassifizierung auf Empfängerseite bleibt.
Wie verhindert Resend-Idempotenz doppelte E-Mails?
Senden Sie für dieselbe logische Anfrage einen stabilen `Idempotency-Key`. Resend bewahrt Schlüssel derzeit 24 Stunden auf, mit höchstens 256 Zeichen; behalten Sie daher zusätzlich eine langlebigere interne Eindeutigkeitsbedingung bei.
Wie sollten Resend-Webhook-Signaturen verifiziert werden?
Behalten Sie den exakten rohen Anfrage-Body und verifizieren Sie die dokumentierten Svix-kompatiblen Header für Webhook-ID, Zeitstempel und Signatur, bevor Sie parsen. Weisen Sie ungültige oder veraltete Eingaben zurück und reihen Sie authentifizierte Events dauerhaft ein, bevor Sie sie bestätigen.
Kann SendHQ Resend ersetzen?
Vergleichen Sie die veröffentlichten API-Verträge und führen Sie Integrationstests auf Feldebene durch, bevor Sie SendHQ und Resend als kompatibel behandeln.
Quellen
- Resend Send Email API – Resend
- Resend API Keys – Resend
- Resend Domains – Resend
- Resend Idempotency Keys – Resend
- Resend Usage Limits – Resend
- Resend Webhooks – Resend
- Verify Resend Webhook Requests – Resend
- Resend Webhook Event Types – Resend
- RFC 5321: Simple Mail Transfer Protocol — RFC-Editor
- OpenAPI-Spezifikation von SendHQ — SendHQ