Il WordPress email SMTP è la configurazione che separa le email dei tuoi clienti dalla cartella spam. Di default, WordPress usa la funzione wp_mail() basata su PHP mail(): nessuna autenticazione, nessuna reputazione, nessun feedback. Il risultato? Email di reset password, notifiche WooCommerce e messaggi dei form che non arrivano mai. In questa guida vediamo come configurare un SMTP relay professionale su WordPress, confrontare i provider migliori e gestire la deliverability per decine di siti clienti.
Sommario
- Perché le email WordPress non arrivano
- Come funziona wp_mail() e perché fallisce
- SMTP relay: cos’è e perché serve
- Configurazione WP Mail SMTP passo-passo
- Brevo vs SendGrid vs Mailgun vs Amazon SES
- Record DNS essenziali: SPF, DKIM e DMARC
- Gestione email SMTP per agenzie multi-sito
- Come testare la deliverability
- Automatizzare la configurazione con WP-CLI
- FAQ
Perché le email WordPress non arrivano
Nella nostra esperienza di gestione di oltre 50 siti WordPress per agenzie, il problema delle email che non arrivano è uno dei ticket più frequenti. I sintomi sono sempre gli stessi:
- Le email di reset password spariscono nel nulla
- Le notifiche ordine di WooCommerce non arrivano al cliente
- I messaggi dei form di contatto finiscono in spam
- Email transazionali WordPress con ritardi di ore
- Nessun errore visibile: WordPress dice “email inviata” ma non arriva
La causa radice è semplice: PHP mail() non ha alcuna autenticazione SMTP. Quando un server web invia email direttamente via sendmail o postfix, il server di destinazione (Gmail, Outlook, ecc.) non ha modo di verificare l’identità del mittente. Senza SPF, DKIM e DMARC configurati, il messaggio viene trattato come potenziale spam.
Secondo una ricerca di Brevo aggiornata al 2026, oltre il 20% delle email transazionali inviate tramite PHP mail() non raggiunge mai la casella di destinazione. Per un’agenzia che gestisce 30 siti, significa che 6 clienti su 30 hanno problemi di email deliverability in questo momento.
Come funziona wp_mail() e perché fallisce
La funzione wp_mail() è il wrapper che WordPress usa per inviare email. È definita in wp-includes/pluggable.php e utilizza la libreria PHPMailer sotto il cofano. Di default, configura PHPMailer per usare mail() come metodo di trasporto:
// wp-includes/pluggable.php — semplificato
function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) {
$phpmailer = new PHPMailer\PHPMailer\PHPMailer( true );
$phpmailer->isMail(); // Usa PHP mail() function
$phpmailer->setFrom( get_bloginfo( 'admin_email' ) );
// ...
return $phpmailer->send();
}
Il problema è che isMail() dice a PHPMailer di usare la funzione mail() di PHP, che a sua volta passa il messaggio al sendmail del sistema. Nessun SMTP, nessuna autenticazione, nessun tracking.
I limiti tecnici di PHP mail() su WordPress
| Problema | Impatto | Soluzione |
|---|---|---|
| Nessuna autenticazione SMTP | Email rifiutate o marcate come spam | Configurare SMTP relay con credenziali |
| Nessun record SPF/DKIM | Reputazione mittente inesistente | Configurare record DNS email |
| Nessun feedback di consegna | Impossibile diagnosticare fallimenti | Usare provider con log e analytics |
| Rate limiting del server | Email bulk bloccate | SMTP relay con coda e retry |
| IP condiviso di hosting | Reputazione compromessa da altri siti | IP dedicato o relay esterno |
SMTP relay: cos’è e perché serve per WordPress
Un SMTP relay è un servizio che riceve le email da WordPress e le recapita al server di destinazione usando una connessione autenticata. Invece di far inviare email direttamente al server web, l’SMTP relay fa da intermediario con:
- Autenticazione credenziali: username e password validano il mittente
- Reputazione IP: il provider mantiene IP con buona reputazione verso Gmail, Outlook, ecc.
- DKIM signing: firma crittografica che verifica l’integrità del messaggio
- Feedback loop: notifiche di bounce, spam complaint, consegne
- Rate limiting intelligente: coda, retry, throttling adattivo
Per un’agenzia, l’SMTP relay è la differenza tra “le email del cliente a volte funzionano” e “le email del cliente arrivano sempre”.
Configurazione WP Mail SMTP passo-passo
WP Mail SMTP è il plugin più diffuso per configurare l’SMTP su WordPress: oltre 3 milioni di installazioni attive. Supporta i principali provider con configurazione guidata.
1. Installa e attiva WP Mail SMTP
wp plugin install wp-mail-smtp --activate
2. Configura il provider SMTP
Dal menu WP Mail SMTP → Settings, seleziona il tuo provider. Ecco la configurazione per i 4 provider più usati:
Configurazione Brevo (ex Sendinblue)
// wp-config.php — definizione costanti (opzionale ma raccomandato)
define( 'WPMS_ON', true );
define( 'WPMS_SMTP_HOST', 'smtp-relay.brevo.com' );
define( 'WPMS_SMTP_PORT', 587 );
define( 'WPMS_SMTP_AUTH', true );
define( 'WPMS_SMTP_USER', 'user@brevo.com' );
define( 'WPMS_SMTP_PASS', 'brevo-smtp-key-here' );
define( 'WPMS_SMTP_SECURE', 'tls' );
define( 'WPMS_SMTP_FROMER', 'noreply@clientedomain.it' );
define( 'WPMS_SMTP_FROMER_NAME', 'Nome Cliente' );
Brevo offre 300 email gratuite al giorno (9.000 al mese), ideale per siti con volume medio. La configurazione richiede la generazione di una SMTP key dal pannello Brevo, non la password dell’account.
Configurazione SendGrid
define( 'WPMS_SMTP_HOST', 'smtp.sendgrid.net' );
define( 'WPMS_SMTP_PORT', 587 );
define( 'WPMS_SMTP_AUTH', true );
define( 'WPMS_SMTP_USER', 'apikey' ); // Sempre 'apikey'
define( 'WPMS_SMTP_PASS', 'SG.xxx.yyy' ); // API key come password
define( 'WPMS_SMTP_SECURE', 'tls' );
SendGrid offre 100 email gratuite al giorno. Il piano a pagamento parte da $19.95/mese per 50.000 email. L’username è sempre apikey e la password è la API key generata dal pannello.
Configurazione Mailgun
define( 'WPMS_SMTP_HOST', 'smtp.mailgun.org' );
define( 'WPMS_SMTP_PORT', 587 );
define( 'WPMS_SMTP_AUTH', true );
define( 'WPMS_SMTP_USER', 'postmaster@dominio.com' );
define( 'WPMS_SMTP_PASS', 'mailgun-smtp-password' );
define( 'WPMS_SMTP_SECURE', 'tls' );
Mailgun richiede la verifica del dominio tramite record DNS. Offre 5.000 email gratuite per i primi 3 mesi, poi $15/mese per 10.000 email.
Configurazione Amazon SES
define( 'WPMS_SMTP_HOST', 'email-smtp.eu-west-1.amazonaws.com' );
define( 'WPMS_SMTP_PORT', 587 );
define( 'WPMS_SMTP_AUTH', true );
define( 'WPMS_SMTP_USER', 'AKIAIOSFODNN7EXAMPLE' );
define( 'WPMS_SMTP_PASS', 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' );
define( 'WPMS_SMTP_SECURE', 'tls' );
Amazon SES è l’opzione più economica per alto volume: $0.10 per 1.000 email. Richiede verifica dominio e uscita dalla sandbox SES. L’endpoint varia in base alla regione AWS.
3. Invia un’email di test
Dalla pagina di configurazione di WP Mail SMTP, usa il pulsante “Email Test” per inviare un’email di verifica. Controlla che arrivi nella casella di destinazione (non in spam).
Brevo vs SendGrid vs Mailgun vs Amazon SES: confronto 2026
Ecco il confronto aggiornato dei 4 provider SMTP più usati per WordPress, basato sui nostri test reali su siti clienti:
| Provider | Free plan | Paid (10K email/mese) | DKIM incluso | Setup difficoltà | Log retention | Webhook bounce |
|---|---|---|---|---|---|---|
| Brevo | 300/giorno | ~$9/mese | Sì | Bassa | Illimitata | Sì |
| SendGrid | 100/giorno | ~$19.95/mese | Sì | Bassa | 30 giorni | Sì |
| Mailgun | 5K/mese (3 mesi) | ~$15/mese | Sì | Media | 30 giorni | Sì |
| Amazon SES | 62K free (solo EC2) | ~$1/mese | Sì | Alta | 60 giorni | Sì |
Quale scegliere per la tua agenzia
Brevo è la nostra scelta predefinita per la maggior parte dei clienti: il free plan generoso, la configurazione semplice e il dashboard in italiano lo rendono ideale per PMI. Per clienti con volume alto (oltre 50.000 email/mese), Amazon SES è imbattibile sui costi ma richiede competenza AWS.
Per una gestione centralizzata, consigliamo di usare un unico account Brevo con sender multipli: ogni dominio cliente viene verificato come sender, e le email vengono inviate con il from del dominio specifico. Questo centralizza la fatturazione e semplifica il monitoraggio.
Record DNS essenziali: SPF, DKIM e DMARC
Configurare l’SMTP relay è solo metà del lavoro. Senza i record DNS email corretti, anche il miglior provider non può garantire la deliverability. Ecco i 3 record essenziali:
SPF (Sender Policy Framework)
L’SPF dice al server di destinazione quali server sono autorizzati a inviare email per questo dominio. Per Brevo:
; TXT record per SPF — dominio cliente
@ IN TXT "v=spf1 include:_spf.brevo.com ~all"
Per chi usa anche Google Workspace o altri servizi, basta combinare gli include:
; SPF con Brevo + Google Workspace
@ IN TXT "v=spf1 include:_spf.brevo.com include:_spf.google.com ~all"
DKIM (DomainKeys Identified Mail)
Il DKIM firma crittograficamente ogni email. Brevo genera automaticamente i record DKIM per ogni dominio verificato:
; TXT record DKIM per Brevo
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
SendGrid e Mailgun forniscono record simili. Amazon SES richiede la generazione manuale di una coppia di chiavi.
DMARC (Domain-based Message Authentication)
Il DMARC dice al server di destinazione cosa fare se SPF o DKIM falliscono. Per iniziare, usa una policy di monitoraggio:
; TXT record DMARC — monitoraggio iniziale
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@dominiocliente.it"
Dopo 2-4 settimane di monitoraggio, quando non ci sono falsi positivi, passa a p=quarantine o p=reject:
; DMARC policy enforcement
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@dominiocliente.it; pct=100"
Gestione email SMTP per agenzie multi-sito
Quando gestisci 20, 30 o 50 siti WordPress clienti, configurare l’SMTP su ognuno manualmente non è scalabile. Ecco il workflow che usiamo in AgencyPilot:
1. Account SMTP centralizzato
Usa un unico account provider (es. Brevo) con sender multipli. Ogni dominio cliente viene verificato come sender autorizzato. Questo centralizza:
- Fatturazione unica
- Monitoraggio centralizzato delle consegne
- Gestione bounce e spam complaint
- Dashboard unificata per tutti i clienti
2. Configurazione via WP-CLI
Invece di configurare ogni sito manualmente dall’admin panel, usa WP-CLI per automatizzare il processo. Per approfondire, leggi la nostra guida completa a WP-CLI per agenzie.
#!/bin/bash
# Script: configurazione SMTP centralizzata per multi-sito
# Uso: ./setup-smtp.sh https://cliente.com /percorso/wordpress
SITE_URL=$1
WP_PATH=$2
SMTP_USER=${SMTP_USER:-"user@brevo.com"}
SMTP_PASS=${SMTP_PASS:-""}
# Verifica credenziali
if [ -z "$SMTP_PASS" ]; then
echo "Errore: definire SMTP_PASS"
exit 1
fi
# Installa e attiva WP Mail SMTP
wp plugin install wp-mail-smtp --activate --path="$WP_PATH"
# Configura via opzioni del plugin
wp option update wp_mail_smtp_version "1.0.0" --path="$WP_PATH"
wp option update wp_mail_smtp_mail "{\"mailer\":\"smtp\",\"host\":\"smtp-relay.brevo.com\",\"encryption\":\"tls\",\"port\":587,\"auth\":true,\"user\":\"$SMTP_USER\",\"pass\":\"$SMTP_PASS\",\"from_email\":\"noreply@$(echo $SITE_URL | sed 's|https://||')\",\"from_name\":\"\",\"return_path\":true}" --format=json --path="$WP_PATH"
# Invia email di test
wp eval 'if(wp_mail("test@agencypilot.it", "Test SMTP", "Configurazione SMTP completata per " . site_url())) { echo "OK\n"; } else { echo "FAIL\n"; }' --path="$WP_PATH"
echo "SMTP configurato per $SITE_URL"
3. Verifica record DNS automatica
Per ogni nuovo cliente, verifica i record DNS prima di configurare l’SMTP. Ecco uno script bash che controlla SPF e DKIM:
#!/bin/bash
# Script: verifica DNS email per dominio cliente
# Uso: ./check-dns-email.sh dominio.it brevo
DOMAIN=$1
PROVIDER=$2
echo "=== Verifica DNS email per $DOMAIN ==="
# SPF
echo -n "SPF: "
SPF=$(dig +short TXT $DOMAIN | grep -i spf)
if [ -z "$SPF" ]; then
echo "MANCANTE — configurare SPF"
else
echo "OK — $SPF"
fi
# DMARC
echo -n "DMARC: "
DMARC=$(dig +short TXT _dmarc.$DOMAIN | grep -i dmarc)
if [ -z "$DMARC" ]; then
echo "MANCANTE — configurare DMARC"
else
echo "OK — $DMARC"
fi
# DKIM Brevo
echo -n "DKIM: "
DKIM=$(dig +short TXT mail._domainkey.$DOMAIN)
if [ -z "$DKIM" ]; then
echo "MANCANTE — verificare dominio nel pannello provider"
else
echo "OK"
fi
echo "=== Fine verifica ==="
Come testare la deliverability delle email WordPress
Dopo aver configurato l’SMTP, è fondamentale testare che le email arrivino effettivamente in inbox. Ecco gli strumenti che usiamo:
Mail-Tester.com (gratis)
Invia un’email all’indirizzo generato da mail-tester.com e ricevi un punteggio da 0 a 10. Controlla SPF, DKIM, DMARC, contenuto spam, blacklist e reputation IP.
WP Mail SMTP Email Test
Il test integrato di WP Mail SMTP invia un’email di prova e mostra il log dettagliato della connessione SMTP. Utile per diagnosticare problemi di connessione.
Google Postmaster Tools
Per i domini che inviano volume significativo verso Gmail, Google Postmaster Tools mostra la reputazione del dominio e IP, i tassi di bounce e le spam complaint.
Controllo via WP-CLI
# Test invio email via WP-CLI
wp eval 'wp_mail("test@esempio.it", "Test Deliverability", "Test email da " . get_bloginfo("name"));' --path=/var/www/wordpress
# Verifica configurazione SMTP attiva
wp option get wp_mail_smtp_mail --format=json --path=/var/www/wordpress
Automatizzare la configurazione SMTP su nuovi siti
Nel nostro processo di onboarding clienti WordPress, la configurazione SMTP è uno step obbligatorio. Ecco come automatizzarla:
- Nuovo cliente: verifica dominio nel pannello Brevo (genera DKIM)
- DNS: configura SPF, DKIM e DMARC sul dominio cliente
- WordPress: installa WP Mail SMTP e configura via script WP-CLI
- Test: invia email di test a mail-tester.com, verifica punteggio 9+
- Documentazione: registra la configurazione nel CRM dell’agenzia
Questo processo si integra naturalmente con la gestione WordPress multi-sito per agenzie che abbiamo documentato. Per siti che usano l’automazione WordPress con Claude API, la configurazione SMTP può essere triggerata automaticamente al provisioning del sito.
Problemi comuni e soluzioni
Email che arrivano in spam anche con SMTP configurato
Se l’email arriva ancora in spam dopo aver configurato l’SMTP, controlla:
- DMARC non configurato: il record DMARC è fondamentale nel 2026. Gmail e Outlook richiedono DMARC per dominio mittente
- Contenuto spam-like: usa Mail-Tester per verificare il punteggio contenuto
- From address non verificato: l’email del mittente deve corrispondere a un dominio verificato nel pannello provider
- IP del provider in blacklist: controlla su MXToolBox Blacklist Check
Email WooCommerce non inviate
WooCommerce usa wp_mail() per le notifiche ordine, quindi la configurazione SMTP risolve il problema. Verifica anche che le notifiche siano abilitate in WooCommerce → Settings → Emails.
Timeout connessione SMTP
Se la connessione SMTP va in timeout, prova:
- Porta 587 con TLS (evita 465 con SSL, che può avere problemi di compatibilità)
- Verifica che il firewall del server permetta connessioni in uscita sulla porta 587
- Controlla se il provider SMTP ha rate limiting attivo
FAQ
WordPress ha bisogno di un plugin SMTP per inviare email?
Tecnicamente no: WordPress usa PHP mail() di default. Ma senza SMTP relay, la deliverability è estremamente bassa. Per siti in produzione, un plugin SMTP come WP Mail SMTP è essenziale.
Qual è il miglior provider SMTP gratuito per WordPress?
Brevo offre il free plan più generoso: 300 email al giorno (9.000 al mese) senza scadenza. Per siti con volume basso come blog aziendali o portfolio, è sufficiente. Per e-commerce o siti con molti utenti, considera un piano a pagamento o Amazon SES per alto volume a basso costo.
Posso usare lo stesso account SMTP per più siti WordPress?
Sì. La maggior parte dei provider (Brevo, SendGrid, Mailgun) supporta sender multipli su un unico account. Verifica ogni dominio cliente come sender autorizzato. Questo centralizza fatturazione e monitoraggio, semplificando la gestione per agenzie.
Quanto costa configurare SMTP per 30 siti clienti?
Con Brevo free plan (300 email/giorno per sito), i costi dipendono dal volume. Per uso tipico di un’agenzia con 30 siti clienti: circa $0-50/mese totale. Con Amazon SES per alto volume: $1-5/mese per 30 siti. Il costo principale è il tempo di configurazione iniziale, circa 15 minuti per sito con automazione WP-CLI.
Posso configurare SMTP senza plugin?
Sì, è possibile configurare PHPMailer direttamente in functions.php usando l’hook phpmailer_init:
add_action( 'phpmailer_init', function( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp-relay.brevo.com';
$phpmailer->Port = 587;
$phpmailer->SMTPAuth = true;
$phpmailer->Username = 'user@brevo.com';
$phpmailer->Password = 'smtp-key';
$phpmailer->SMTPSecure = 'tls';
$phpmailer->From = 'noreply@dominio.it';
$phpmailer->FromName = 'Nome Cliente';
});
Tuttavia, questo approccio non è raccomandato: le credenziali sono in chiaro nel tema, non c’è UI di configurazione e non c’è email logging. Per siti in produzione, usa WP Mail SMTP o un plugin dedicato.