Inviare mail con PHP



by   |  LETTURE 9720

Inviare mail con PHP

L'email è uno degli strumenti più antichi quanto utili in campo informatico, e chi opera nello sviluppo di applicazioni lato server si sarà sicuramente trovato a dover far inviare email automatiche dal sito web, l'invio delle mail può essere necessario in caso di mailing list, per la confema della registrazione a un sito, oppure per avvertire gli utenti di novità che possano attrarre la loro attenzione.

Ebbene il linguaggio PHP ci permette di inviare mail usando una semplice quanto potente funzione chiamata appunto mail();
Prima di andare avanti è importante verificare se il server che ospita il nostro sito PHP sia abilitato all'invio delle mail in uscita e la presenza di eventuali limitazioni, questo per non incorrere il blocchi o inserimenti su liste di spam.

Succede infatti che spesso gli sviluppatori ignorano i limiti imposti dal provider in termini di email inviabili al giorno o limite massimo di email inviate contemporaneamente finendo inesorabilmente nelle black list. Uscirne non è facile quindi meglio essere previdenti fin da subito.

Uso basilare della funzione mail() con PHP

Volendo provare immediatamente l'invio di una mail con PHP possiamo iniziare con il seguente codice di esempio:

  mail("t[email protected]", "Prima mail", "Testo della mia prima mail");  
La funzione proverà ad inviare una mail all'indirizzo [email protected] con oggetto "Prima mail" e con il corpo del messaggio "Testo della mia prima mail".

Questa restituirà TRUE in caso di invio corretto della mail e FALSE in caso di fallimento. I fallimenti nell'invio di una mail possono essere causati da molti fattori, ovviamente il server che esegue il codice PHP deve avere un mail server configurato per l'invio, definito nella configurazione stessa di PHP.

Dal web è possibile scaricare moltissimi software gratuiti di email server come ad esempio PostCast Server.

Usare mail() con dati di intestazione

L'uso che abbiamo visto nell'esempio precedente è alquanto limitato, in un messaggio che si rispetti infatti, è utile specificare almeno il mittente che invia il messaggio, altrimenti PHP inserirà l'indirizzo di posta dell'amministratore del server.

Vediamo come specificarlo attraverso il parametro From:

  $mittente = "[email protected]"; $destinatario = "[email protected]";  $oggetto = "Seconda mail";  $messaggio = "Ecco la mia seconda email";    mail($destinatario, $oggetto, $messaggio, $mittente);  
Nella variabile "$mittente" possiamo specificare chi sta inviando la mail e il suo indirizzo, i caratteri escape "rn" costituiscono il ritorno accapo all'interno della stringa.

E' possibile infatti specificare molti altri parametri nella nostra mail, come ad esempio il "Reply to:" ovvero l'indirizzo sul quale andiamo a rispondere alla mail, oppure gli indirizzi da mettere in copia "cc:", gli indirizzi da mettere in copia ma nascosti "bcc:" e molte altre utili informazioni.

Un esempio più avanzato dell'uso di mail()

Cerchiamo di realizzare un esempio più interessante e articolato, sfruttiamo la potenza di PHP nella concatenazione di stringhe per inviare mail in formato HTML a più destinatari e con più indirizzi in copia.

 /* destinatari suddivisi dalle virgole */ $destinatari  = "Nome 1 <[email protected]>" . ", " ;  $destinatari .= "Nome 2 <[email protected]>" . ", " ; $destinatari .= "Nome 3 <[email protected]>";  /* oggetto */ $oggetto = "Oggetto della mail";  /* messaggio composto da una pagina HTML */ $messaggio = '<title></title><p> </p><p>Diamo il benvenuto a 3 nuovi utenti !</p><p> </p><div>Benvenuto: Nome 1</div><p> </p><div>Benvenuto: Nome 2</div><p> </p><div>Benvenuto: Nome 3</div><p> </p> ';  /* L'intestazione Content-type va specificata per inviare in formato HTML  */ $intestazioni  = "MIME-Version: 1.0rn"; $intestazioni .= "Content-type: text/html; charset=iso-8859-1rn";  /* altre intestazioni  */ $intestazioni .= "To: Nome 1 <[email protected]>, Nome 2 <[email protected]>, Nome 3 <[email protected]>rn"; $intestazioni .= "From: Guida HTML5 <[email protected]>rn"; $intestazioni .= "Cc: [email protected]";  /* Inviamo la mail */  mail($destinatari, $oggetto, $messaggio, $intestazioni); 
Mi auguro che questo tutorial abbia in parte svelato la facilità con cui PHP permette l'invio di messaggi di posta elettronica, come sempre per chi desidera avere informazioni più aggiornate in merito alla funzione mail() di PHP può consultare il sito di riferimento ufficiale all'indirizzo http://php.net/manual/it/function.mail.php.

Se avete ancora domande dubbi o curiosità in merito a questo argomento commentate o datemi feedback magari inviandomi proprio una mail dal vostro server.