Se gestisci un sito WordPress e i tuoi visitatori si lamentano di non ricevere email, il problema è quasi certamente uno: WordPress sta usando wp_mail() senza autenticazione SMTP. Questo significa che le tue notifiche vengono spedite dal server hosting, che nella maggior parte dei casi non è configurato per la ricezione moderna di email. Risultato: Gmail, Yahoo, Libero, Outlook e altri provider bloccano o mettono in spam queste email.
In questo articolo scoprirai perché succede, come diagnosticare il problema e soprattutto come risolverlo una volta per tutte—una soluzione che funziona per qualsiasi plugin WordPress che invia notifiche.
Perché le notifiche email di WordPress non arrivano
WordPress ha una funzione integrata, wp_mail(), che permette ai plugin di inviare email. Questa funzione è semplice e funziona in ambienti di sviluppo locale, ma ha un grosso difetto: di default non usa autenticazione SMTP.
Invece di contattare un server SMTP esterno (come fa un vero client email), wp_mail() chiama direttamente la funzione PHP mail() del server hosting. Il problema? Il server hosting non è un fornitore di email specializzato—non ha un'infrastruttura di reputazione, non ha SPF/DKIM/DMARC configurati per il tuo dominio, e Gmail, Yahoo e altri provider lo sanno.
Risultato: la tua email arriva nel server del destinatario, ma viene subito bloccata o messa in spam perché il server hosting non è «affidabile» agli occhi dei filtri moderni.
La causa: PHP mail() e la configurazione del hosting
Quando wp_mail() usa mail(), l'email viene spedita con un From-address (il mittente) che spesso non corrisponde al tuo dominio. Se il tuo sito è www.tuanegozio.it e il server hosting è su un IP condiviso, Gmail potrebbe ricevere un'email che dice «da tuanegozio.it» ma che proviene da un server IP che non ha mai visto tuanegozio.it prima.
Questo genera un allarme di sicurezza: potrebbe essere un fornitore di spam. E così l'email finisce in spam.
Un'altra ragione comune: il server hosting potrebbe avere indirizzi IP sulla lista nera (blacklist) perché altri clienti del server hanno spedito spam. Anche se tu non lo fai, la tua email viene penalizzata.
Verifica il tuo dominio: SPF, DKIM e DMARC
Prima di risolvere il problema, devi capire come i grandi provider come Gmail e Yahoo verificano che un'email proviene realmente da te. Usano tre standard:
- SPF (Sender Policy Framework): Un record DNS che dice «le email da tuanegozio.it devono provenire solo da questi server». Senza SPF, chiunque può spacciare di essere te.
- DKIM (DomainKeys Identified Mail): Una firma crittografica che prova che l'email non è stata modificata durante il viaggio. Ogni email autentica ha una firma DKIM che Gmail verifica.
- DMARC (Domain-based Message Authentication): Una politica che dice a Gmail/Yahoo cosa fare con email che NON passano SPF/DKIM (p=quarantine o p=reject).
Se il tuo sito invia email usando wp_mail() dal server hosting senza SPF/DKIM/DMARC, i provider moderni non sapranno verificare che l'email è legittima. Quindi la metteranno in spam o la bloccheranno del tutto.
Se usi invece un provider SMTP esterno (come WP Mail SMTP + SendGrid, Mailgun, etc.) o l'SMTP del tuo hosting, quei provider hanno già SPF/DKIM configurati. Devi solo aggiungere un record SPF al tuo dominio che dica «anche questo provider può inviare email da tuanegozio.it» e tutto funziona.
Soluzione 1: WP Mail SMTP con provider esterno
La soluzione più semplice e universale è installare il plugin WP Mail SMTP (gratuito) e configurarlo per usare un provider SMTP esterno.
- Installa il plugin WP Mail SMTP dalla directory WordPress ufficiale.
- Nel pannello amministrativo di WordPress, vai a
WP Mail SMTP > Settings. - Scegli un provider SMTP. Opzioni popolari:
- SendGrid — gratuito per i primi 100 email al giorno, SPF/DKIM inclusi.
- Mailgun — gratuito per i primi 5000 email al mese, ottima per siti piccoli.
- Brevo (ex Sendinblue) — provider europeo, buono per siti italiani.
- Google Workspace SMTP — se già usi Google Workspace, puoi usare il tuo account come server SMTP.
- Ottieni le credenziali SMTP dal provider (di solito username/password o API key) e inseriscile in WP Mail SMTP.
- Aggiungi un record SPF al tuo dominio per autorizzare il provider. Ad esempio, se usi Mailgun, il record sarà qualcosa come
v=spf1 include:mailgun.org ~all. Il tuo provider ti darà il valore esatto. - Clicca su «Send Test Email» in WP Mail SMTP per verificare che funzioni.
Con questo metodo, tutte le email di WordPress (Contact Form 7, WooCommerce, Elementor, etc.) passeranno per il provider SMTP e avranno SPF/DKIM autentico.
Soluzione 2: Configurare SMTP diretto presso l'hosting
Alcuni provider di hosting (ad esempio MailUp, Aruba, SiteGround) offrono credenziali SMTP dirette nel tuo account hosting. Se il tuo hosting le fornisce, puoi usarle con WP Mail SMTP senza bisogno di registrarti a SendGrid o altri.
Vantaggi: nessun account terzo, tutto rimane presso il tuo hosting. Svantaggi: il supporto varia molto, e se l'hosting ha SPF/DKIM scadenti per il tuo dominio, il problema persiste.
Per questa strada:
- Accedi al pannello di controllo del tuo hosting (cPanel, Plesk, ISPmanager, etc.).
- Cerca la sezione «Email» o «SMTP» e nota le credenziali SMTP (host, porta, username, password).
- In WP Mail SMTP, scegli «Other SMTP» e inserisci quei dati.
- Verifica il record SPF: il tuo hosting dovrebbe dirtelo quale record SPF aggiungere. Di solito include l'indirizzo IP del server o un hostname.
Plugin comuni e il loro problema con wp_mail()
Se stai usando Contact Form 7, WooCommerce, Elementor Forms, Gravity Forms o qualsiasi altro plugin che invia notifiche email, il problema non è del plugin—è di WordPress stesso che usa wp_mail() senza SMTP.
Fortunatamente, WP Mail SMTP cattura tutte le email di WordPress in una sola mossa. Una volta installato e configurato, ogni notifica passerà per SMTP, indipendentemente dal plugin che l'ha generata.
Passo dopo passo: la verifica finale
Dopo aver configurato WP Mail SMTP (o SMTP del hosting) e aggiunto il record SPF:
- Invia un email di prova. Usa il bottone «Send Test Email» in WP Mail SMTP.
- Verifica SPF/DKIM. Nel nostro test gratuito di inbox placement, spedisci un'email di prova e guarda se SPF/DKIM sono segnati come «Pass». Se sono rossi, c'è ancora un errore di configurazione.
- Controlla lo spam. Se il provider SMTP è nuovo (es. SendGrid), Gmail potrebbe metterla in spam le prime volte. Dopo 2-3 email legittime, la reputazione migliora automaticamente.
- Testa con Contact Form 7 o un altro plugin. Compila una form sul tuo sito e verifica che il proprietario riceva l'email (di nuovo, controlla sia Inbox che Spam).
Se dopo questi passaggi le email arrivano in Inbox su Gmail, Yahoo, Libero, Outlook e altri provider—congratulazioni, hai risolto il problema!