Fehlerbehebung
Warum werden meine E-Mails doppelt gesendet?
Finden Sie heraus, woher doppelte E-Mails kommen, und verhindern Sie sie mit dem Header Idempotency-Key, der wiederholte API-Anfragen sicher macht.
Dieser Artikel hilft, wenn Empfänger dieselbe E-Mail zwei- oder mehrmals erhalten. Emailit sendet jede angenommene Anfrage genau einmal. Duplikate bedeuten daher fast immer, dass die Anfrage Emailit mehr als einmal erreicht hat.
Symptome
- Ein Empfänger meldet zwei identische E-Mails.
- Email APIEmails zeigt zwei oder mehr E-Mails mit demselben Empfänger und Betreff, jede mit eigener
em_…-ID, im Abstand von Sekunden oder Minuten erstellt. - Email APILogs zeigt mehr als eine Anfrage
POST /v2/emailsfür dieselbe Nachricht.
Ursache
Häufige Quellen wiederholter Anfragen:
- Wiederholungen nach einer Zeitüberschreitung. Ihr HTTP-Client oder Ihre Job-Warteschlange ist in eine Zeitüberschreitung gelaufen und hat es erneut versucht, obwohl die erste Anfrage bereits angenommen war.
- Job-Warteschlangen mit At-least-once-Zustellung. Ein Worker ist nach dem Senden abgestürzt, aber bevor er den Job als erledigt markiert hat, sodass der Job erneut lief.
- Durch Webhooks ausgelöste Sendungen. Ihr Endpunkt sendet eine E-Mail, wenn er ein Event erhält. Hat er zu langsam geantwortet, hat Emailit den Webhook wiederholt und Ihr Code hat erneut gesendet.
- Zwei Integrationen. Zum Beispiel senden ein WordPress-SMTP-Plugin und Ihre App dieselbe Benachrichtigung, oder eine Automatisierung und Ihr Code senden beide eine Willkommens-E-Mail.
- Doppeltes Absenden eines Formulars oder über eine Schaltfläche.
Emailit entfernt doppelte Adressen innerhalb einer Anfrage bereits über to, cc und bcc hinweg, ohne Beachtung der Groß-/Kleinschreibung. Eine einzelne Anfrage sendet nie zweimal an dieselbe Person.
Lösung
-
Quelle finden. Filtern Sie unter Email APIEmails nach dem Empfänger und vergleichen Sie die Duplikate. Prüfen Sie API-Schlüssel und Zeitstempel und ordnen Sie sie dann den Anfragen unter Email APILogs zu. Anfragen von verschiedenen Schlüsseln deuten meist auf zwei Integrationen hin, Anfragen vom selben Schlüssel auf Wiederholungen.
-
Header
Idempotency-Keyhinzufügen. Erzeugen Sie einen Schlüssel einmal pro logischer E-Mail, zum Beispiel aus Ihrer Bestell- oder Event-ID, und verwenden Sie ihn bei jeder Wiederholung erneut:curl https://api.emailit.com/v2/emails \ -H "Authorization: Bearer $EMAILIT_API_KEY" \ -H "Idempotency-Key: order-1042-receipt" \ -H "Content-Type: application/json" \ -d '{"from":"Acme <hello@acme.com>","to":"ada@example.com","subject":"Your receipt","html":"<p>Thanks!</p>"}'Schlüssel bestehen aus 1 bis 256 Zeichen aus Buchstaben, Ziffern,
-und_und gelten nur für Ihren Workspace. -
Antworten verarbeiten. 24 Stunden lang gibt eine Wiederholung mit demselben Schlüssel die ursprüngliche Antwort zurück, ohne erneut zu senden oder zu berechnen. Eine Wiederholung, die eintrifft, während die erste Anfrage noch läuft, erhält
409 Idempotency key in progress: Warten Sie und versuchen Sie es mit demselben Schlüssel erneut. Fehlgeschlagene Anfragen werden nicht gespeichert, Sie können sie also mit demselben Schlüssel wiederholen. -
Webhook-Handler deduplizieren. Speichern Sie jede verarbeitete
event_idund überspringen Sie Events, die Sie bereits verarbeitet haben. -
Zweite Integration entfernen. Stellen Sie sicher, dass nur ein System jede Art von Nachricht sendet.
Idempotenzschlüssel funktionieren mit E-Mail senden und E-Mail weiterleiten. SMTP hat kein Gegenstück. Deduplizieren Sie daher in Ihrer App, bevor Sie E-Mails an das Relay übergeben. Details finden Sie unter Idempotenz.
Weiterhin Probleme?
Kontaktieren Sie den Support oder fragen Sie auf Discord und nennen Sie die IDs von zwei doppelten E-Mails.