Pronto al Lancio

Errori e bug · 6 min di lettura ·

Email di conferma che non arrivano: perché e come risolvere

Le email di conferma o di reset password della tua app fatta con l'AI non arrivano o finiscono nello spam? Cause, SMTP, SPF, DKIM, DMARC e cosa fare.

Gli utenti si registrano ma le email di conferma non arrivano, oppure finiscono nello spam? È uno dei problemi più comuni nelle app create con l'AI, e quasi mai è colpa del codice. Di solito l'app sta usando un servizio email di prova pensato solo per i test, il dominio da cui partono le email non è «certificato» con i record SPF, DKIM e DMARC, oppure il link nell'email punta all'indirizzo sbagliato. Vediamo come capire qual è il tuo caso e come sistemarlo.

Come fa un'app a inviare email

La tua app non spedisce le email da sola. Le consegna a un servizio di invio, un po' come lasci una lettera all'ufficio postale. Il protocollo con cui l'app parla con questo ufficio postale si chiama SMTP, e i dati per collegarsi (indirizzo del server, utente, password) sono le «credenziali SMTP».

Le email di conferma, di reset password o le ricevute si chiamano email transazionali: partono in automatico in risposta a un'azione dell'utente. Sono diverse dalle newsletter, e i provider di posta come Gmail o Outlook le giudicano soprattutto in base a una domanda: possiamo fidarci del mittente?

Perché le email di conferma non arrivano

Stai usando il servizio email di prova

Molte piattaforme includono un servizio email predefinito, comodo per provare ma non pensato per un'app vera. Supabase, per esempio, lo dichiara nella sua documentazione: senza un server SMTP personalizzato, le email di autenticazione vengono inviate solo agli indirizzi dei membri del team del progetto, con un limite molto basso di messaggi all'ora e senza garanzie di consegna. Ecco perché le email arrivano a te ma non ai tuoi utenti.

Nei log o nelle risposte di errore puoi trovare indizi come email rate limit exceeded, oppure l'indicazione che l'indirizzo non è autorizzato a ricevere email dal servizio predefinito.

Il dominio mittente non è autenticato

Quando un'email arriva, il provider del destinatario controlla se il mittente è chi dice di essere. Lo fa leggendo alcuni record DNS del tuo dominio. Il DNS è l'elenco pubblico che dice a internet dove si trovano i servizi di un dominio, un po' come un elenco telefonico.

  • SPF: l'elenco dei «postini» autorizzati a spedire per il tuo dominio. Se l'email arriva da un server non in elenco, è sospetta.
  • DKIM: un sigillo digitale apposto su ogni email. Il destinatario verifica il sigillo e capisce che il messaggio non è stato alterato.
  • DMARC: le istruzioni per il destinatario su cosa fare se SPF e DKIM non tornano (consegnare, mettere nello spam, rifiutare) e dove mandare i rapporti.

Senza questi record le email finiscono spesso nello spam o vengono rifiutate. I grandi provider di posta sono diventati sempre più severi su questo punto.

Il mittente è un indirizzo Gmail o simile

Se configuri un servizio di invio con un mittente tipo tuonome@gmail.com, l'email parte da un server che Gmail non ha autorizzato. Il controllo DMARC fallisce e il messaggio viene scartato o messo nello spam. Per le email dell'app serve un mittente sul tuo dominio, come noreply@tuodominio.it o ciao@tuodominio.it.

Il link nell'email porta a localhost

A volte l'email arriva, ma il link non funziona o apre localhost:3000, un indirizzo che esiste solo sul computer di chi sviluppa. In Supabase il «Site URL» predefinito è proprio http://localhost:3000: se non lo aggiorni con il dominio vero, le email di conferma e di reset password puntano lì. Va controllato anche l'elenco degli indirizzi di reindirizzamento consentiti. Approfondiamo questi casi nella guida sugli errori di login e autenticazione.

Il link è scaduto o già usato

I link di conferma hanno una durata limitata e spesso valgono una sola volta. Alcuni sistemi di sicurezza aziendali aprono in automatico i link contenuti nelle email per controllarli, «consumandoli» prima che l'utente ci clicchi. Il risultato è un errore come otp_expired o un link che risulta non valido.

L'indirizzo è sbagliato o è stato bloccato

Un errore di battitura in fase di registrazione (gmial.com invece di gmail.com) basta a far sparire l'email nel nulla. Inoltre molti servizi di invio tengono una «lista di esclusione»: se un indirizzo ha rifiutato un messaggio in passato o ha segnalato un'email come spam, i messaggi successivi verso quell'indirizzo non vengono più spediti. Nel pannello del servizio di invio di solito trovi lo stato di ogni email: consegnata, rifiutata o bloccata.

Come capire qual è il tuo caso

Cosa succedeCausa probabileCosa fare
Le email arrivano a te ma non agli utentiServizio email di provaConfigurare un SMTP personalizzato
Dopo qualche invio smettono di partireLimite di invio raggiuntoUsare un servizio di invio con limiti adeguati
Arrivano, ma nello spamDominio non autenticatoAggiungere SPF, DKIM e DMARC
Il mittente è un Gmail e non arrivanoIl controllo DMARC fallisceUsare un mittente sul tuo dominio
Il link apre localhostSite URL non aggiornatoImpostare il dominio pubblico e i redirect
«Link scaduto» al primo clicScadenza o link già usatoVerificare durata e scanner aziendali

Due verifiche che puoi fare da solo:

  1. Registrati con un indirizzo Gmail che non fa parte del team. Se l'email non arriva nemmeno nello spam, il problema è nell'invio. Se arriva nello spam, è un problema di fiducia nel mittente.
  2. Leggi l'intestazione dell'email. In Gmail apri il messaggio, clicca sui tre puntini e scegli «Mostra originale». In alto vedi l'esito di SPF, DKIM e DMARC: PASS va bene, FAIL ti dice cosa sistemare.

Cosa puoi fare tu

  1. Scegli un servizio di invio per email transazionali. Ne esistono diversi, con piani gratuiti per volumi bassi e piani a pagamento: confronta limiti e condizioni sul sito di ciascuno, perché cambiano spesso.
  2. Verifica il tuo dominio nel servizio. Il servizio ti fornisce i record DNS da aggiungere, di solito per SPF e DKIM. Li inserisci nel pannello dove hai acquistato il dominio o dove gestisci il DNS, come spieghiamo nella guida su come collegare un dominio alla tua app.
  3. Aggiungi un record DMARC. Per iniziare va bene una politica di solo monitoraggio, che non blocca nulla ma ti manda i rapporti:
Nome:   _dmarc
Tipo:   TXT
Valore: v=DMARC1; p=none; rua=mailto:dmarc@tuodominio.it
  1. Tieni un solo record SPF. Un dominio deve averne uno soltanto. Se usi già un servizio di posta per la tua casella, non aggiungere un secondo record: unisci le autorizzazioni in uno solo.
  2. Inserisci le credenziali SMTP nella piattaforma. In Supabase si fa nelle impostazioni di autenticazione, nella sezione dedicata all'SMTP. Tratta la password SMTP come una chiave segreta: non deve mai finire nel codice che gira nel browser, come spieghiamo nella guida sulle variabili d'ambiente.
  3. Aggiorna Site URL e indirizzi di reindirizzamento con il dominio pubblico, con e senza www se li usi entrambi.
  4. Cura il contenuto dell'email. Usa un nome mittente riconoscibile, un oggetto chiaro («Conferma la tua registrazione a NomeApp») e qualche riga di testo oltre al pulsante. Un'email fatta solo di un link anonimo sembra più sospetta, sia ai filtri sia alle persone.
  5. Prova con più provider: Gmail, Outlook e, se puoi, una casella aziendale.

I record DNS possono richiedere da pochi minuti a qualche ora per essere visibili ovunque, quindi non preoccuparti se la verifica non passa subito.

Quando conviene farti aiutare

Se hai configurato tutto ma le email continuano a finire nello spam, se il DNS del dominio è già pieno di record per altri servizi e temi di rompere la posta che usi ogni giorno, o se gli utenti non riescono a confermare l'account e stai perdendo registrazioni, conviene farsi seguire da qualcuno.

Di solito controlliamo DNS, servizio di invio e impostazioni di autenticazione insieme, perché il problema spesso sta nel modo in cui si combinano. Se vuoi capire cosa blocca le tue email, prenota una call gratuita: in 20 minuti vediamo insieme da dove partire.

Domande frequenti

Vuoi che ci guardiamo noi?

Prenota una call gratuita di 20 minuti: ci racconti il problema, ti diciamo cosa serve e quanto costa. Senza impegno.

Prenota la call gratuita

Potrebbe interessarti anche