Hai appena installato Contact Form 7, il modulo funziona perfettamente dal punto di vista visivo, ma le email dei visitatori spariscono nel nulla. Niente avvisi di errore, niente log — solo il silenzio frustrante di una comunicazione che non avviene mai.
Tranquillo: questo è uno dei problemi più comuni su WordPress, e la causa è quasi sempre la stessa. WordPress usa per default una funzione chiamata wp_mail(), che funziona come un bancomat rotto: accetta il deposito ma non garantisce che i soldi arrivino a destinazione. Il problema è che il tuo server di hosting, specialmente se in shared hosting, non ha un server SMTP configurato correttamente per l'invio.
Perché Contact Form 7 non invia email
Quando installi WordPress, la funzione wp_mail() cerca di inviare email direttamente dal tuo server web. Suona bene in teoria, ma nella pratica succede questo:
- Il tuo hosting condiviso disabilita l'invio di email per evitare abusi (spam).
- Anche se lo consente, la maggior parte dei server non ha Postfix, Sendmail o altri servizi SMTP configurati.
- WordPress tenta di inviare da un indirizzo
From:che non corrisponde al dominio del server — le email vengono rifiutate come spoofing o finiscono direttamente in spam. - Se non hai SPF e DKIM configurati, i filtri antispam di Gmail, Libero, Virgilio e altri provider italiani scartano le email.
Risultato: Contact Form 7 non sa nemmeno che c'è un errore, perché la funzione wp_mail() ritorna sempre true anche se il messaggio non è stato mai spedito. È un bug di design di WordPress, ma la soluzione è semplice.
Soluzione 1: Installa WP Mail SMTP
Il primo passo è installare WP Mail SMTP, un plugin gratuito che intercetta tutti gli invii di email da WordPress e li devia verso un vero server SMTP esterno (Google, Microsoft, Brevo, GetResponse, etc.).
- Accedi alla dashboard di WordPress →
Plugin→Aggiungi nuovo. - Cerca
WP Mail SMTP(creato da WP Mail SMTP by WPForms). - Installa e attiva il plugin.
- Vai a
WP Mail SMTP→Settings. - Scegli un provider SMTP:
Gmail— facile se usi Google Workspace; richiede una password specifica per app (non la password account).Brevo— ESP italiano-friendly, gratuito fino a 300 email/giorno, credenziali nel dashboard Brevo.GetResponse— ESP con ottimo supporto italiano, API key nel dashboard.Mailgun, SendGrid, MailerSend— provider internazionali affidabili.
- Inserisci le credenziali SMTP nel plugin (host, porta, username, password).
- Nel campo
From Email, metti un indirizzo che corrisponde al dominio del tuo sito (es. se il sito èmiosite.it, usanoreply@miosite.itoppureinfo@miosite.it). - Salva e testa.
admin@tuohosting.it ma il dominio reale è miosite.it, è spoofing. I provider email rifiutano le email o le mettono in spam. Assicurati che l'indirizzo From sia sempre nomeutente@tuosito.it, mai da un dominio diverso.Soluzione 2: Configura SPF e DKIM
Anche con WP Mail SMTP attivo, se non hai SPF (Sender Policy Framework) e DKIM (DomainKeys Identified Mail) configurati, le tue email avranno meno credibilità ai occhi di Gmail, Libero, Virgilio, TIM e altri provider italiani.
Questi due standard dicono ai server riceventi: «Sì, l'email viene da noi, potete fidarvi».
Come fare:
- SPF: Accedi al pannello DNS del tuo hosting e aggiungi un record TXT. Se usi Brevo, sarà qualcosa come
v=spf1 include:brevo.com ~all. Se usi Gmail, saràv=spf1 include:sendgrid.net ~all(dipende dal provider SMTP). - DKIM: Il tuo provider SMTP (Brevo, Gmail, GetResponse) ti fornirà una chiave DKIM da aggiungere al DNS. È una stringa lunga in un record TXT o CNAME. Il plugin WP Mail SMTP spesso non configura DKIM automaticamente — devi farlo nel pannello del provider SMTP e poi nel DNS del tuo hosting.
- DMARC (opzionale ma consigliato): Aggiungi un record TXT
v=DMARC1; p=none; rua=mailto:admin@tuosito.itper monitorare cosa succede alle tue email.
Se tutto questo ti sembra complicato, il tuo hosting dovrebbe avere un tutorial nel pannello di controllo (cPanel, Plesk, etc.) su come aggiungere record SPF/DKIM. Se sei in dubbio, chiedi al supporto hosting.
Soluzione 3: Testa la deliverability prima di andare in produzione
Una volta configurato WP Mail SMTP e aggiunti SPF/DKIM, come verifichi che tutto funziona? Non aspettare che un cliente si lamenti che non ha ricevuto il messaggio.
Usa check.live-direct-marketing.online, lo strumento gratuito di inbox placement test: crei un form di contatto finto, invii un email di test, e lo strumento ti mostra:
- Se l'email è arrivata in Inbox, Spam, o se è stata rifiutata completamente.
- I veredetti di SPF/DKIM/DMARC.
- Come il tuo email appare in Gmail, Libero, Virgilio, TIM, Outlook, Yahoo — con screenshot reali.
- I verdetti del filtro antispam di ciascun provider.
È gratuito, non richiede registrazione, e in pochi minuti sai esattamente se il tuo setup è corretto. Se l'email non arriva nemmeno al test, allora sai che c'è ancora un problema da risolvere.
Soluzione 4: Verifica i log di WordPress
Se dopo tutte queste correzioni Contact Form 7 ancora non invia, attiva il debug di WordPress per vedere se ci sono errori nascosti:
- Apri il file
wp-config.phpnella root del tuo sito. - Aggiungi (o modifica):
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); - Salva il file.
- Invia un test dalla form.
- Vai a
/wp-content/debug.log(sul server, via FTP o file manager dell'hosting) e leggi i messaggi di errore.
Questo file di log ti dirà esattamente cosa è andato storto — credenziali SMTP sbagliate, provider irraggiungibile, etc. Non ignorare gli errori: Contact Form 7 non è responsabile della consegna email, lo è il tuo stack SMTP.
Caso speciale: Elementor Forms
Se non usi Contact Form 7 ma Elementor Forms (il builder drag-and-drop), il problema è identico: anche Elementor usa wp_mail() per default. La soluzione è la stessa: installa WP Mail SMTP e configura un provider SMTP esterno. Non devi fare nulla di speciale in Elementor — il plugin intercetta tutti gli invii di WordPress.
Contact Form 7 non invia email quando attivato su un nuovo sito — cosa significa?
Significa che WordPress non ha accesso a un server SMTP. Per default, wp_mail() usa il server locale, che sulla maggior parte degli hosting condivisi è disabilitato. Installa WP Mail SMTP e scegli un provider esterno (Gmail, Brevo, etc.).
Se attivo WP Mail SMTP, tutte le email di WordPress passano attraverso il provider SMTP?
Sì. WP Mail SMTP intercetta tutti gli invii di WordPress: form di contatto, notifiche di commenti, email di reset password, email di conferma ordine WooCommerce, etc. È un vantaggio perché garantisce deliverability uniforme; l'unico limite è la quota giornaliera del provider (Gmail gratuito: ~500 email/giorno, Brevo gratuito: 300 email/giorno).
Come verifico se il problema è veramente il dominio From?
Controlla le impostazioni di WP Mail SMTP: il campo From Email deve essere nomeutente@tuodominio.it, non un indirizzo di un altro dominio. Se vedi qualcosa come admin@tuohosting.it mentre il tuo sito è miosite.it, è spoofing. Correggi il From e aggiungi SPF/DKIM del tuo dominio nel DNS.