Il CMS WordPress è uno strumento veramente utile e fantastico. Infatti tramite l’installazione dei plugin, è possibile ampliarne le funzionalità in maniera molto semplice e in molti casi, senza aver bisogno di conoscenze approfondite di programmazione.

Uno dei classici esempi in cui WordPress offre la possibilità di installare una funzionalità complessa (dal punto di vista della programmazione), è quando hai la necessità di inserire uno o più moduli di contatto all’interno del tuo sito internet. Per esempio in questo caso puoi usare un plugin come Contact Form 7 (leggi anche la guida su come adeguare i moduli di Contact Form 7 al GDPR).

Avere un modulo di contatto all’interno del proprio sito può sembrare una funzionalità elementare e ovvia. Nella realtà dei fatti non è così. Molto spesso quando chiedi un preventivo a web agency che utilizzano sistemi proprietari per la creazione dei siti internet, viene messa in preventivo anche la creazione di ogni singolo modulo di contatto, con costi non proprio irrisori.

In questa guida apprenderai come inviare in maniera efficace email con WordPress e verificare lo stato di consegna delle stesse. In questo modo non avrai più problemi nell’inviare e ricevere email con WordPress, situazione che si può verificare in determinate circostanze.

Come invia le email WordPress?

WordPress per inviare qualsiasi email, da quelle dei moduli di contatto, a quelle per il recupero password dell’utente, utilizza la funzione mail() PHP del server. Nella maggior parte dei casi questa funzione è abilitata dal tuo fornitore di hosting (leggi anche cos’è l’hosting) e tutto funziona correttamente.

Tuttavia vi sono due casistiche in cui non si ricevono le email inviate da un sito WordPress:

  1. la funzione mail() PHP non è abilitata dal fornitore di hosting,
  2. il provider di posta di chi riceve l’email dalla funzione mail() PHP, contrassegna il messaggio con un alto punteggio spam e per questo motivo non la recapita al destinatario.

Perché il fornitore di hosting ha disabilitato la funzione mail() PHP?

Alcuni fornitori di hosting disabilitano la funzione mail() PHP perché è la più sfruttata quando un sito viene hackerato. Praticamente gli hacker che riescono ad accedere all’hosting di un sito, sfruttano questa funzione del server per poter inviare migliaia di email pubblicitarie indesiderate (per intenderci sono le classiche email che ti propongono il viagra) in giro per il mondo.

Questo utilizzo non solo sovraccarica di lavoro il server del fornitore di hosting, ma lo fa anche inserire all’interno delle black-list. Ovvero tutte le email che verranno inviate da quel determinato IP, verranno classificate in automatico come SPAM e perciò non verranno recapitate ai destinatari.

Per uscire dalla black-list, il fornitore di hosting dovrà dapprima chiudere la falla nel suo server (capire come sono entrati gli hacker e impedirgli gli accessi futuri), bloccare l’invio automatico di email pubbliciarie, richiedere la rimozione dalla black-list (avviene solamente dopo qualche giorno, perché ci si deve assicurare che il server non stia più inviando email indesiderate).

Perché l’email inviata con la funzione mail() PHP viene contrassegnata in automatico come SPAM?

Questo problema è causato direttamente da un errato utilizzo della funzione mail() PHP.

Se ci troviamo nello stesso server di un sito che è stato “bucato” e che sta inviando centinaia di migliaia di email pubblicitarie indesiderate, corriamo il rischio che anche le nostre email vengano contrassegnate con alti punteggi spam. Il motivo è molto semplice, la macchina che sta inviando le email è la stessa (indirizzo IP uguale), perciò tutte le email inviate da quel determinato indirizzo IP finiscono nella black-list.

Cosa fare se WordPress non invia le email?

Nel 99% dei casi WordPress non invia le email per uno dei motivi sopracitati, quindi cosa puoi fare per poter avere uno strumento che funziona perfettamente?

Nel caso in cui il fornitore di hosting abbia bloccato la funzione mail() PHP, puoi chiedergli di attivarla. Ma se le politiche aziendali non prevedono questa possibilità, difficilmente potrebbe fare uno strappo alla regola.

Nel caso in cui sei all’interno di un server finito nella black-list, devi chiedere il delisting. Puoi farlo direttamente tu facendo la richiesta nelle diverse black-list, oppure devi chiedere nuovamente al tuo fornitore di hosting. In questa casistica un’altra soluzione è quella di passare in un server con IP dedicato, ovvero essere l’unico sito internet che esce con un determinato indirizzo IP.

Tuttavia se non vuoi correre il rischio di avere WordPress che non invia le email, il consiglio è quello di utilizzare un server SMTP dedicato.

Avendo un server di posta in uscita non sarai più vittima dei limiti della funzione mail() PHP, inoltre affidandoti a un servizio come Mailgun, saprai sempre se le email inviate tramite WordPress sono state recapitate/rifiutate dal tuo destinatario, oltre a sapere se sono state aperte e anche se chi l’ha ricevuta, ha cliccato negli eventuali link presenti nel messaggio.

Installare un plugin SMTP su WordPress

Utilizzare un server di posta dedicato rispetto alla funzione mail() PHP richiede l’installazione di un plugin. Il plugin che utilizzo solitamente era chiamato Postman, oggi il suo nome completo è Post SMTP Mailer/Email Log (vedi pagina del plugin).

Per installarlo segui questi passaggi:

  • nel menu a sinistra della tua area amministrativa di WordPress vai su Plugin/Aggiungi Nuovo
  • cerca Postman, clicca su “Installa ora” e successivamente su “Attiva” del plugin che hai scelto (nel caso di questa guida Post SMTP Mailer/Email Log)
    Installare plugin post smtp Postman

Il plugin per inviare email tramite SMTP è installato. Ora bisogna scegliere con chi inviare la posta.

Scegli il server SMTP

Come per il plugin per configurare il server SMTP, anche per il server di posta in uscita stesso, non esiste una regola aurea che dice di utilizzare un servizio piuttosto di un altro.

Per esempio hai la possibilità di utilizzare

  • il server SMTP del tuo hosting (se ti viene fornito),
  • il server SMTP di Gmail (se hai un account Gmail),
  • un server SMTP di un servizio specializzato nell’invio di posta.

In questa guida ti verrà spiegato come configurare il server SMTP di Mailgun. Ho scelto questo servizio perché oltre a inviare la posta, mi offre anche la possibilità di vedere i log. Perciò posso sempre sapere se l’email è stata recapitata al destinatario o se si sono verificati degli errori (informazioni che non potrei sapere con il server SMTP di Gmail o del mio fornitore di hosting).

Dopo aver scelto il servizio, non rimane che configurare il server SMTP con il plugin WordPress.

Configurare il server SMTP (Mailgun) con il plugin WordPress

Premessa: se ancora non hai verificato il tuo dominio e creato un utente su Mailgun, ti consiglio di leggere la guida presente nel post cos’è Mailgun.

Per configurare il server SMTP con il plugin WordPress segui questi passi:

  1. nel menu a sinistra della tua area amministrativa di WordPress clicca su “Post SMTP”,
  2. clicca su “Show All Settings”,
    Show all settings Postman
  3. Nella nuova pagina clicca sul menu a tendina e seleziona Mailgun API”,
    Seleziona Mailgun API
  4. recupera le chiavi API da Mailgun:
    • fai login su Mailgun,
    • nel menu a sinistra clicca su “settings“,
    • clicca su “API Security“,
    • mostra la “Private API key“e copiala.
      Private API key Mailgun
  5. ritorna alle impostazioni del plugin all’interno dell’area amministrativa del tuo WordPress:
    • copia la “Private API key” nel campo “API Key“,
    • nel campo “Domain name” scrivi il nome del dominio (es: mg.innovora.org),
    • se il server SMTP di Mailgun si trova in Europa per la questione GDPR, spunta il box “Mailgun Europe Region?“,
    • clicca su “Salva le modifiche“.
      Impostazioni Mailgun
  6. Una volta salvate le impostazioni, torna su “Show All Settings” e clicca sul tab “Message”. Qui puoi impostare il nome e l’indirizzo email del mittente ed evitare che altri plugin li sovrascrivano. Inoltre puoi settare altre impostazioni,
    Impostazioni mittente Mailgun Postman
  7. invia un’email di test e verifica che tutto sia funzionante.

Tutte le email che verranno inviate da WordPress passeranno tramite il plugin e il server SMTP di Mailgun. Hai la possibilità di verificare lo stato di consegna sia dai log del plugin sia dai log di Mailgun.