Zum Inhalt springen

Resend

Resend ist eine moderne, auf Entwickler ausgerichtete E-Mail-API mit einem übersichtlichen Dashboard und schneller Domain-Einrichtung. Sie passt hervorragend zu neuen Projekten, die transaktionale E-Mails in wenigen Minuten zum Laufen bringen wollen.

Wählen Sie Resend, wenn Sie ein neues Projekt starten, schlanke Werkzeuge mögen und geringe bis mittlere transaktionale Volumen senden. Der kostenlose Tarif ist klein, reicht aber für die meisten Kontaktformulare. Für sehr hohe Volumen zum niedrigsten Preis sehen Sie sich Amazon SES an; für Marketing und transaktionale E-Mails mit Hosting in der EU Brevo oder Mailjet. Siehe die Übersicht der E-Mail-Dienste.

  • Ein Resend-Konto.
  • Eine verifizierte Domain (Domains → Add domain). Ohne sie können Sie nur Test-E-Mails von onboarding@resend.dev an die Adresse Ihres eigenen Kontos senden – siehe Sandbox & Limits.
  • Einen API-Schlüssel mit „Sending access“ (nicht „Full access“): API Keys → Create API key → Permission: Sending access, optional auf eine einzelne Domain beschränkt. Das ist die minimale Berechtigung, die Frontmail braucht. Verbindung testen erkennt einen Schlüssel, der nur senden darf, und akzeptiert ihn.
  1. Öffnen Sie E-Mail-Dienste → Dienst hinzufügen → Resend.
  2. Füllen Sie die Felder aus:
Feld Wo Sie es finden Beispiel
API-Schlüssel API Keys (wird nur einmal angezeigt) re_123abc456def…
Webhook-Signaturschlüssel Webhooks → Ihr Endpunkt → Signing secret whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Max. E-Mails pro Sekunde Optional; Standard 2/s (das Standard-Team-Limit von Resend) 2
  1. Klicken Sie auf Prüfen & speichern.
  2. Der Dienst wird gespeichert, sobald die Prüfung erfolgreich ist. Die Zugangsdaten werden mit AWS KMS per Envelope-Verschlüsselung verschlüsselt.

Resend zeigt die Einträge auf der Seite der Domain an. Für example.com sehen sie so aus:

; DKIM
resend._domainkey.example.com. TXT "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ…"
; SPF + Bounce-Verarbeitung auf der Subdomain "send" (der Envelope-Absender)
send.example.com. MX 10 feedback-smtp.us-east-1.amazonses.com.
send.example.com. TXT "v=spf1 include:amazonses.com ~all"
; DMARC (von Resend empfohlen, wird nicht automatisch angelegt)
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
  • Die Subdomain send trägt den SPF-Eintrag, sodass Sie den SPF-Eintrag Ihrer Hauptdomain nicht anfassen müssen.
  • Der MX-Host enthält die Region, die Sie für die Domain gewählt haben (us-east-1, eu-west-1, …).
  • Manche DNS-Anbieter hängen die Domain automatisch an – tragen Sie als Hostnamen resend._domainkey und send ein, nicht die vollständigen Namen.
  • Beginnen Sie DMARC mit p=none und verschärfen Sie dann auf p=quarantine / p=reject.

Beim Hinzufügen einer Domain können Sie in Resend deren Versandregion wählen – z. B. North Virginia (us-east-1), Irland (eu-west-1), São Paulo (sa-east-1) oder Tokio (ap-northeast-1). Der API-Endpunkt (api.resend.com) ist für alle Regionen derselbe, daher gibt es in Frontmail kein Feld für die Region; die Region ist eine Eigenschaft der Domain. Um sie zu ändern, fügen Sie die Domain mit der neuen Region erneut hinzu und passen das DNS an.

  • Ohne verifizierte Domain können Sie nur von onboarding@resend.dev und nur an die E-Mail-Adresse Ihres Resend-Kontos senden. Alles andere schlägt mit 403 – You can only send testing emails to your own email address fehl, was Frontmail als auth-Fehler behandelt.
  • Kostenloser Tarif: 3.000 E-Mails pro Monat, 100 pro Tag, 1 Domain.
  • Rate Limit: standardmäßig 2 Anfragen pro Sekunde pro Team; der Standardwert von Frontmail für Resend ist daher 2/s. Resend kann das Limit auf Anfrage erhöhen.
  • Wird das Tages- oder Monatskontingent überschritten, antwortet Resend mit 429 daily_quota_exceeded / monthly_quota_exceeded; Wiederholungen helfen erst nach dem Zurücksetzen des Kontingents. Solche Nachrichten enden daher meist als failed, und der Credit wird erstattet.
  1. Kopieren Sie die Webhook-URL von der Seite des Dienstes in Frontmail (Kopier-Schaltfläche):

    https://api.frontmail.dev/webhooks/providers/resend/<token>
  2. Öffnen Sie in Resend Webhooks → Add endpoint, fügen Sie die URL ein und wählen Sie die Ereignisse aus:

Resend-Ereignis Frontmail-Ereignis
email.delivered delivered
email.bounced (Permanent) bounced – wird auf die Sperrliste gesetzt
email.bounced (Transient / sonstige) als Soft Bounce erfasst
email.delivery_delayed an der Nachricht vermerkt
email.complained complained – wird auf die Sperrliste gesetzt
email.opened opened (Öffnungsverfolgung für die Domain aktivieren)
email.clicked clicked (Klickverfolgung für die Domain aktivieren)
  1. Öffnen Sie den Endpunkt, kopieren Sie das Signing secret (whsec_…) und fügen Sie es in Frontmail in das Feld Webhook-Signaturschlüssel ein.

Signaturprüfung: Resend liefert Webhooks über Svix aus. Frontmail prüft die Header svix-id, svix-timestamp und svix-signature: HMAC-SHA256 über id.timestamp.body mit Ihrem Signaturschlüssel. Anfragen, deren Zeitstempel mehr als 5 Minuten abweicht, werden abgelehnt. Ohne den Schlüssel werden Ereignisse nicht verifiziert und ignoriert.

Frontmail versieht jede E-Mail mit einem Tag, das seine Nachrichten-ID enthält, damit sich Ereignisse zuordnen lassen.

  • auth – der Dienst funktioniert nicht (ungültiger oder gelöschter Schlüssel, nicht verifizierte Domain, Einschränkungen des Testmodus, 401/403). Der Dienst wird als unhealthy markiert; der Inhaber erhält eine E-Mail und ein Banner im Dashboard. Der Ersatzdienst der Vorlage übernimmt; andernfalls wird der Credit erstattet und die Nachricht wartet als held_service_error in der Warteschlange zurückgehaltener E-Mails und wird automatisch gesendet, sobald Sie den Dienst repariert haben (geprüft beim Speichern und bei der täglichen Statusprüfung).
  • permanent – genau diese Nachricht kann nicht gesendet werden (ungültiger Empfänger, Validierungsfehler 422). Ersatzdienst, falls eingerichtet, sonst failed und Erstattung.
  • transient – 5xx, 429, Timeouts. Wiederholung mit exponentiellem Backoff; nach dem letzten Versuch failed und Erstattung.
Antwort von Resend Klasse Was zu tun ist
401 missing_api_key / 403 invalid_api_key auth Erstellen Sie einen neuen Schlüssel mit Sending access und aktualisieren Sie den Dienst.
403 validation_error – The example.com domain is not verified auth Schließen Sie die Domain-Verifizierung in Resend ab oder korrigieren Sie die Absenderdomain in der Vorlage.
403 validation_error – You can only send testing emails to your own email address auth Verifizieren Sie Ihre eigene Domain; der Testabsender resend.dev ist nur für Ihren eigenen Posteingang gedacht.
422 validation_error – Invalid to field permanent Siehe ungültiger Empfänger.
422 invalid_attachment / 422 validation_error (andere Felder) permanent Korrigieren Sie die Vorlage oder den Anhang; siehe HTML-Vorlagen.
429 rate_limit_exceeded transient Zu viele Anfragen pro Sekunde; lassen Sie Max. E-Mails pro Sekunde bei 2 oder bitten Sie Resend um mehr.
429 daily_quota_exceeded / monthly_quota_exceeded transient Kontingent aufgebraucht; wechseln Sie in einen höheren Tarif.
500 internal_server_error, Timeout transient Störung bei Resend – Frontmail wiederholt den Versand.
  • Domain verifiziert: resend._domainkey TXT + send MX und TXT
  • DMARC-Eintrag veröffentlicht (zu Beginn p=none)
  • API-Schlüssel nur mit Sending access
  • Verbindung testen erfolgreich
  • Absenderadresse in der Vorlage auf der verifizierten Domain (nicht resend.dev)
  • Webhook-Endpunkt mit delivered, bounced, complained (+ opened/clicked)
  • Signing secret (whsec_…) in Frontmail eingefügt