Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🔧 Contact form 7: configurare l'invio email e risolvere gli errori di invio

🔧 Contact form 7: configurare l'invio email e risolvere gli errori di invio

Come Contact Form 7 invia le email e perché non arrivano

Contact Form 7 è usato su oltre 5 milioni di siti, il che lo rende il plugin per form più popolare per WordPress. Creare un form con tre campi richiede pochi minuti, ma quando le email smettono di arrivare iniziano i problemi: i proprietari dei siti perdono contatti, non hanno idea di cosa sia andato storto e finiscono a spulciare thread nei forum.

Il problema non è quasi mai il plugin in sé. CF7 passa l'email alla funzione wp_mail(), che la trasmette al tuo server. Da lì, ciò che accade dipende dal tuo hosting, dalle impostazioni PHP, dai plugin attivi e da una dozzina di altri fattori. Basta una REST API disabilitata o un campo "From" errato e il form funziona ma le email non arrivano.

Abbiamo preparato una guida passo passo per configurare il template email di CF7 e analizzato tutte le cause comuni di mancata consegna, con soluzioni specifiche testate su decine di siti.

💡 Panoramica rapida:

  • Compilazione dei campi To, From e Subject nelle impostazioni email
  • Copia di un template HTML già pronto per il corpo dell'email
  • Verifica dei principali motivi per cui le email non vengono inviate
  • Configurazione di SMTP per una consegna affidabile

Configurare il template email: passo dopo passo

Apri il tuo form nel pannello di amministrazione: Contact Form → seleziona il tuo form → scheda "Mail". È qui che CF7 assembla l'email a partire da tre parti: intestazioni, oggetto e corpo. Un errore in qualsiasi campo blocca la consegna, quindi esaminiamoli uno per uno.

To, From e Subject

To è il tuo indirizzo email di lavoro dove arrivano gli invii. Per esempio, [email protected] o un indirizzo Gmail se stai usando un plugin SMTP.

From ha una regola fondamentale: il dominio del mittente deve corrispondere al dominio del tuo sito. La maggior parte degli host rifiuta le email in cui il campo "From" contiene [email protected] mentre il sito è su mysite.com. Usa [email protected]; non è necessario che la casella esista realmente, va bene così. Il server di posta controlla il dominio, non se l'indirizzo è reale.

Subject può includere macro CF7 per dati dinamici:

1[_site_title]Form "Contact Form"

[_site_title] inserisce automaticamente il nome del tuo sito dalle impostazioni di WordPress. In questo modo vedi subito da quale progetto proviene l'invio.

Intestazioni aggiuntive: lascia stare Reply-to; CF7 imposterà automaticamente l'email dal campo del form che specifichi nel corpo dell'email.

Corpo dell'email: template HTML

L'email predefinita di CF7 è testo semplice con tag di campo. Ha un aspetto scadente ed è difficile da leggere. Ecco il template che usiamo su tutti i nostri progetti, con logo, impaginazione corretta e link email/telefono cliccabili:

1<img src="https://YOUR_DOMAIN.COM/wp-content/uploads/2024/logo-150x150.png"
2 style="max-width: 150px !important;">
3
4<h3>The user submitted the following information:</h3>
5
6<p><b>Name:</b> [text-59]</p>
7<p><b>E-mail:</b> <a href="mailto:[Email]">[Email]</a></p>
8<p><b>Phone:</b> <a href="tel:[tel-116]">[tel-116]</a></p>
9<p><b>Message:</b> [textarea-102]</p>
10
11<p>Message sent from [_site_title] ([_site_url])</p>

Punti chiave: il logo deve essere quadrato e compatto (circa 150 px per lato), altrimenti si romperà nei client di posta. Le macro tra parentesi quadre ([text-59], [Email]) sono i tag dei campi del tuo form; sostituiscili con i nomi che hai usato nella scheda "Form". E assicurati di spuntare la casella "Use HTML content type" sotto l'editor del template, altrimenti i tag HTML arriveranno come testo semplice.

Casella di controllo del tipo di contenuto HTML in CF7

6 Motivi per cui le email non vengono inviate e come risolverli

1. Campo "From" errato

L'errore più comune: il campo "From" contiene l'email del cliente presa dal form, [Email]. Il server destinatario vede un'email da un dominio gmail.com inviata dal tuo hosting e la blocca come spoofing. Soluzione: "From" deve sempre essere un indirizzo sul dominio del tuo sito. Inserisci l'email del cliente in Reply-to tramite un'intestazione aggiuntiva:

1Reply-To: [Email]

2. Conflitti con plugin di sicurezza

Plugin come Wordfence, iThemes Security (ora Solid Security) e All-In-One Security possono bloccare le richieste HTTP in uscita di WordPress, inclusa la spedizione delle email. La diagnosi è semplice: disabilita tutti i plugin tranne Contact Form 7 e testa il form. Se funziona, riattiva i plugin uno per uno per trovare il colpevole.

3. REST API disabilitata

Contact Form 7 usa la REST API di WordPress per inviare i form tramite AJAX. Plugin di ottimizzazione, come Clearfy Cache (nota: a ottobre 2025 il progetto è stato assorbito da Super Page Cache e non è più sviluppato separatamente; si consiglia agli attuali utenti di migrare a Super Page Cache), potrebbero disabilitare la REST API per velocizzare il sito. Controlla le impostazioni del tuo ottimizzatore: l'interruttore REST API deve essere su "Off", il che significa che la REST API è abilitata e funzionante.

4. L'hosting blocca la funzione mail()

Sugli hosting economici, la funzione PHP mail() è spesso disabilitata o limitata. Contact Form 7 la usa di default per inviare le email. Contatta il supporto del tuo host e chiedi se mail() è consentita sul tuo piano. In caso contrario, passa a SMTP (vedi la sezione seguente); questo risolve completamente il problema.

5. Le email finiscono nello spam

Anche se l'email è stata inviata, Gmail o il servizio di posta del tuo host potrebbero metterla nello spam. I motivi includono: record SPF/DKIM mancanti per il dominio, un'intestazione From "sospetta", HTML senza una parte testuale. Soluzione: un plugin SMTP che invia tramite un servizio esterno (Gmail API, Mailgun, SendGrid). Questi firmano ogni email con una firma DKIM e usano server SMTP affidabili, rendendo la consegna quasi del 100%.

6. Sensibilità alla versione PHP e WordPress

CF7 è aggiornato attivamente (controlla la versione corrente su wordpress.org; a metà 2026 è il ramo 6.x, che gira su PHP 7.4 e superiori). Se il tuo hosting usa un vecchio PHP 5.6, o al contrario hai abilitato PHP 8.4 sperimentale senza verificare la compatibilità, le email potrebbero fallire silenziosamente. Attieniti a PHP 8.1-8.2; è il punto di equilibrio ideale.

Configurare SMTP: risolvere il problema di consegna una volta per tutte

SMTP è un protocollo che trasmette le email non attraverso la funzione mail() del tuo server, ma tramite un servizio di posta completo. WordPress ha una dozzina di plugin che intercettano wp_mail() e instradano le email attraverso un server SMTP esterno.

Cosa scegliere:

  • Gmail API: gratuito fino a 500 email al giorno tramite Google Workspace o un account Gmail personale. Pro: consegna eccellente. Contro: devi creare un progetto in Google Cloud Console e ottenere chiavi OAuth.
  • Brevo (ex Sendinblue): 300 email gratuite al giorno, semplice SMTP con login e password. Nessuna OAuth richiesta.
  • Mailgun: 100 email gratuite al giorno, prendi una chiave API e sei a posto. Per sviluppatori.

Installa un qualsiasi plugin SMTP (WP Mail SMTP, Post SMTP, FluentSMTP; sono tutti gratuiti nel repository di WordPress), inserisci le credenziali del tuo provider e non avrai più bisogno della funzione mail(). CF7 continua a funzionare come al solito, ma le email passano attraverso un canale affidabile.

CSS e font personalizzati nelle email di CF7

Se non invii solo richieste di contatto ma, per esempio, conferme d'ordine con brevi dettagli sui prodotti, ha senso stilizzare l'email. I CSS nelle email funzionano tramite stili inline (style=""); i client di posta ignorano i fogli di stile esterni. Ecco un esempio di template stilizzato:

1<img src="https://YOUR_DOMAIN.COM/logo.png"
2 style="max-width: 150px !important;">
3
4<h2 style="font-family: Arial, sans-serif; color: #333;">
5 The user selected a product:
6</h2>
7<h2 style="font-family: Arial, sans-serif;">[hidden-120]</h2>
8
9<hr style="border: 1px solid #eee;">
10
11<h3 style="font-family: Arial, sans-serif; color: #555;">
12 The user submitted the following information:
13</h3>
14
15<p style="font-size: 14px;"><b>Name:</b> [text-59]</p>
16<p style="font-size: 14px;"><b>Phone:</b> <a href="tel:[tel-116]">[tel-116]</a></p>
17<p style="font-size: 14px;"><b>Email:</b> [Email]</p>
18
19<p style="color: #999; font-size: 12px;">
20 Message sent from <b>[_site_title] ([_site_url])</b>
21</p>

Stesse regole: logo quadrato, casella formato HTML spuntata, macro sostituite con le tue. I font personalizzati di Google Fonts non funzionano nelle email; usa stack di font di sistema (Arial, Helvetica, sans-serif).

⁉️🤔 Domande frequenti

Perché CF7 mostra "Message sent" ma non c'è nessuna email?

CF7 è responsabile della raccolta dei dati e del loro passaggio a WordPress, non della consegna finale. La risposta "success" significa che la richiesta AJAX è stata completata senza errori. L'invio effettivo dell'email avviene in background tramite wp_mail(), e se qualcosa va storto in quel passaggio (hosting ha bloccato mail(), l'indirizzo From non ha superato la validazione, l'email è finita nello spam), CF7 non mostrerà un errore. Ecco perché dovresti sempre testare il form inviando a una casella reale dopo la configurazione.

Un plugin SMTP è obbligatorio?

Non obbligatorio, ma fortemente raccomandato. Senza SMTP, le tue email vengono inviate dalla funzione PHP mail(), che non autentica il mittente, non firma DKIM ed è spesso bloccata dai filtri antispam. Un plugin SMTP aggiunge autenticazione e migliora drasticamente la consegna. In pratica, abbiamo visto dozzine di siti in cui il form "funzionava" ma le email finivano nello spam o non arrivavano affatto. Dopo aver abilitato SMTP tramite Post SMTP o FluentSMTP, il problema è scomparso in 5 minuti.

Cosa devo fare se CF7 ha smesso di funzionare dopo un aggiornamento di WordPress?

Per prima cosa, controlla la tua versione PHP; CF7 richiede PHP 7.4 o superiore (verifica nella documentazione ufficiale). Poi disabilita i plugin di caching e ottimizzazione: spesso rompono la REST API quando il core si aggiorna. Se non aiuta, passa temporaneamente a un tema WordPress predefinito e testa il form. Nella maggior parte dei casi, si tratta di un conflitto con un plugin di caching o sicurezza che non si è ancora adattato alla nuova versione del core.

Come posso verificare se la REST API funziona?

Apri https://your-site.com/wp-json/ nel tuo browser. Se vedi un JSON con un elenco di endpoint disponibili, la REST API è attiva. Se ottieni un 404 o una pagina bianca, la REST API è stata disabilitata da un plugin di ottimizzazione o sicurezza. Questo è il metodo diagnostico più rapido: se l'endpoint restituisce JSON, CF7 ha tutto ciò che gli serve per funzionare. Cerca le impostazioni REST API in plugin come Clearfy, Perfmatters, WP-Optimize o in soluzioni di sicurezza come Wordfence.

Posso inviare email con allegati tramite CF7?

Sì, CF7 supporta il caricamento di file tramite il campo [file]. Nelle impostazioni email, nel campo "Attachments", inserisci la macro per quel campo e il file verrà allegato all'email. La maggior parte degli host limita la dimensione degli allegati tramite upload_max_filesize in PHP (di solito 2-8 MB). Per caricamenti multipli, usa campi separati. Se le email con allegati non vengono inviate mentre il form funziona senza allegati, il problema è il limite di dimensione; riduci le dimensioni dei file o chiedi al tuo host di aumentare il limite.

Cosa usare nel 2026: CF7 + SMTP o alternative?

Contact Form 7 resta il miglior plugin gratuito per i form WordPress se hai bisogno di personalizzazione e non temi di mettere mano alle impostazioni. Ma il problema della consegna delle email è insito nell'architettura stessa di WordPress: la funzione mail() è intrinsecamente inaffidabile.

Quindi la formula per il 2026 è: Contact Form 7 + plugin SMTP. Installa FluentSMTP (gratuito, leggero, senza pubblicità in admin) o Post SMTP e configura l'invio tramite Gmail API, Brevo o Mailgun. Questi due componenti insieme ti danno: personalizzazione illimitata del form + consegna di livello enterprise. Costo: 0 €, tempo di configurazione: 10 minuti.

Se vuoi un form che funzioni "out of the box" senza alcuna seccatura, considera WPForms o Ninja Forms. Sono a pagamento, ma l'invio SMTP è integrato di default attraverso i loro server. La scelta è tua: la flessibilità di CF7 o la semplicità delle soluzioni commerciali.

🔗 Contact Form 7 su WordPress.org | 🔗 Documentazione CF7