Přejít na obsah
Dokumentace

Řešení problémů

Proč se moje e-maily odesílají dvakrát?

Zjistěte, odkud se berou duplicitní e-maily, a zastavte je hlavičkou Idempotency-Key, díky které je opakování požadavků na API bezpečné.

Aktualizováno 1. 10. 2026

Tento článek pomůže, když příjemci dostávají stejný e-mail dvakrát nebo vícekrát. Emailit odešle každý přijatý požadavek jednou, takže duplicity téměř vždy znamenají, že požadavek dorazil do Emailitu víckrát.

Příznaky

  • Příjemce hlásí dva stejné e-maily.
  • Email APIEmails ukazuje dva nebo více e-mailů se stejným příjemcem a předmětem, každý s vlastním ID em_…, vytvořené v odstupu několika sekund nebo minut.
  • Email APILogs ukazuje pro stejnou zprávu víc než jeden požadavek POST /v2/emails.

Příčina

Časté zdroje opakovaných požadavků:

  • Opakování po vypršení časového limitu. Vašemu HTTP klientovi nebo frontě úloh vypršel časový limit a požadavek se zopakoval, ale první požadavek už byl přijatý.
  • Fronty úloh s doručením alespoň jednou. Worker spadl po odeslání, ale dřív, než úlohu označil jako hotovou, takže se úloha spustila znovu.
  • Odesílání vyvolané webhooky. Váš endpoint odešle e-mail, když přijme událost. Pokud odpověděl pomalu, Emailit webhook zopakoval a váš kód e-mail odeslal znovu.
  • Dvě integrace. Například SMTP plugin pro WordPress i vaše aplikace odesílají stejné oznámení, nebo automatizace i váš kód odesílají uvítací e-mail.
  • Dvojité odeslání formuláře nebo dvojí kliknutí na tlačítko.

Emailit už v rámci jednoho požadavku odstraňuje duplicitní adresy napříč to, cc a bcc bez ohledu na velikost písmen. Jeden požadavek nikdy neodešle stejnému člověku dvakrát.

Řešení

  1. Najděte zdroj. V Email APIEmails vyfiltrujte příjemce a porovnejte duplicity. Zkontrolujte API klíč a časová razítka a pak je spárujte s požadavky v Email APILogs. Požadavky z různých klíčů obvykle ukazují na dvě integrace. Požadavky ze stejného klíče ukazují na opakování.

  2. Přidejte hlavičku Idempotency-Key. Vygenerujte klíč jednou pro každý logický e-mail, například z ID objednávky nebo události, a při každém opakování ho použijte znovu:

    Terminal
    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>"}'

    Klíče mají 1 až 256 znaků z písmen, číslic, - a _ a platí v rámci vašeho workspace.

  3. Ošetřete odpovědi. Po dobu 24 hodin vrátí opakovaný požadavek se stejným klíčem původní odpověď, aniž by se znovu odeslal nebo zaúčtoval. Opakování, které dorazí, zatímco první požadavek ještě běží, dostane 409 Idempotency key in progress: počkejte a zkuste to znovu se stejným klíčem. Neúspěšné požadavky se neukládají, takže je můžete zopakovat se stejným klíčem.

  4. Odstraňte duplicity v obsluze webhooků. Ukládejte každé zpracované event_id a události, které jste už zpracovali, přeskakujte.

  5. Odeberte druhou integraci. Zajistěte, aby každý typ zprávy odesílal jen jeden systém.

Idempotenční klíče fungují u endpointů Odeslání e-mailu a Přeposlání e-mailu. SMTP nic podobného nemá, takže duplicity odstraňte ve své aplikaci, než poštu předáte relayi. Podrobnosti najdete na stránce Idempotence.

Stále si nevíte rady?

Napište podpoře nebo se zeptejte na Discordu a uveďte ID dvou duplicitních e-mailů.

Byla tato stránka užitečná?

Děkujeme za zpětnou vazbu.

Děkujeme, čteme každou zprávu.