Vai al contenuto
Docs

Risoluzione dei problemi

Perché le email vengono inviate due volte?

Scopri da dove arrivano le email duplicate ed evitale con l’header Idempotency-Key, che rende sicuri i nuovi tentativi delle richieste API.

Aggiornato il 1 ott 2026

Questo articolo ti aiuta quando i destinatari ricevono la stessa email due o più volte. Emailit invia una sola volta ogni richiesta accettata, quindi i duplicati significano quasi sempre che la richiesta è arrivata a Emailit più di una volta.

Sintomi

  • Un destinatario segnala due email identiche.
  • Email APIEmails mostra due o più email con lo stesso destinatario e lo stesso oggetto, ciascuna con il proprio ID em_…, create a pochi secondi o minuti di distanza.
  • Email APILogs mostra più di una richiesta POST /v2/emails per lo stesso messaggio.

Causa

Le origini più comuni delle richieste ripetute:

  • Nuovi tentativi dopo un timeout. Il client HTTP o la coda dei job è andata in timeout e ha ritentato, ma la prima richiesta era già stata accettata.
  • Code di job at-least-once. Un worker si è bloccato dopo l’invio ma prima di contrassegnare il job come completato, quindi il job è stato eseguito di nuovo.
  • Invii avviati dai webhook. Il tuo endpoint invia un’email quando riceve un evento. Se ha risposto lentamente, Emailit ha ritentato il webhook e il tuo codice ha inviato di nuovo.
  • Due integrazioni. Ad esempio un plugin SMTP di WordPress e la tua app inviano entrambi la stessa notifica, oppure un’automazione e il tuo codice inviano entrambi un’email di benvenuto.
  • Doppi invii da un modulo o da un pulsante.

Emailit rimuove già gli indirizzi duplicati all’interno di una richiesta, senza distinguere tra maiuscole e minuscole, tra to, cc e bcc. Una singola richiesta non invia mai due volte alla stessa persona.

Soluzione

  1. Trova l’origine. In Email APIEmails, filtra per destinatario e confronta i duplicati. Controlla la chiave API e i timestamp, poi trova le richieste corrispondenti in Email APILogs. Richieste da chiavi diverse indicano di solito due integrazioni. Richieste dalla stessa chiave indicano nuovi tentativi.

  2. Aggiungi un header Idempotency-Key. Genera una chiave una sola volta per ogni email logica, ad esempio dall’ID dell’ordine o dell’evento, e riusala a ogni nuovo tentativo:

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

    Le chiavi sono lunghe da 1 a 256 caratteri tra lettere, cifre, - e _, e valgono all’interno del workspace.

  3. Gestisci le risposte. Per 24 ore, una richiesta ripetuta con la stessa chiave restituisce la risposta originale senza inviare né addebitare di nuovo. Una richiesta ripetuta che arriva mentre la prima è ancora in corso riceve 409 Idempotency key in progress: attendi e ritenta con la stessa chiave. Le richieste non riuscite non vengono memorizzate, quindi puoi ritentarle con la stessa chiave.

  4. Elimina i duplicati nei gestori dei webhook. Memorizza ogni event_id che elabori e salta gli eventi che hai già gestito.

  5. Rimuovi la seconda integrazione. Assicurati che ogni tipo di messaggio venga inviato da un solo sistema.

Le chiavi di idempotenza funzionano con Invia un’email e Inoltra un’email. L’SMTP non ha un equivalente, quindi elimina i duplicati nella tua app prima di passare le email al relay. Leggi Idempotenza per i dettagli.

Serve ancora aiuto?

Contatta il supporto o chiedi su Discord indicando gli ID di due email duplicate.

Questa pagina ti è stata utile?

Grazie del feedback.

Grazie, leggiamo ogni messaggio.