Con questo tutorial vedremo come inviare mail tramite PHP. A questo scopo PHP mette a disposizione la funzione mail(), in grado di inviare messaggi email con codifica MIME. La funzione mail() permette quindi l’invio di messaggi anche molto complessi, con allegati, immagini ecc…
In questa prima parte del tutorial vedremo l’uso più semplice di tale funzione, ovvero l’invio di semplici messaggi formati da indirizzo del destinatario, oggetto e testo del messaggio. Nel nostro caso la funzione mail() si presenta in questo modo:
<?php
$destinatario = "bob@server.com";
$oggetto = "email di prova";
$messaggio = "Ecco la mia prima email";
mail($destinatario, $oggetto, $messaggio);
?>
Come si può notare il formato è molto semplice. Bisogna ricordare però che perchè l’invio venga effettuato è necessario disporre di un mail server, e l’indirizzo di questo deve essere indicato nelle impostazioni di PHP. Se volete testare i vostri script che fanno uso della funzione mail() in locale, vi consiglio di installare un mail server gratuito, come ad esempio PostCast Server.
Nell’esempio suddetto verrà inviato un messaggio a "bob@server.com" con oggetto "email di prova" e testo "Ecco la mia prima email".
In questo modo l’email inviata sarà in formato testo. Si potranno quindi usare tutti i caratteri di rientro o fine riga a piacere. Ad esempio si può inserire "n" per andare a capo.
Se avete testato il codice soprastante vi sarete accorti, se vi siete autoinviati una mail, che l’indirizzo di posta del mittente viene visualizzato in un formato "anomalo". Infatti l’indirizzo di posta che è stato utilizzato è quello dell’amministratore del server. E’ però ovviamente possibile indicare un indirizzo email a piacere, o un testo, da visualizzare come mittente, usando l’intestazione "From:". Possiamo modificarè il codice così:
<?php
$mittente = 'From: "Il mio nome" <io@mioserver.it> rn';
$destinatario = "bob@server.com";
$oggetto = "email di prova";
$messaggio = "Ecco la mia prima email";
mail($destinatario, $oggetto, $messaggio, $mittente);
?>
Notiamo che se vogliamo far comparire del testo è necessario che questo sia tra doppi apici, mentre l’indirizzo email del mittente deve essere racchiuso tra i segni di minore "<" e maggiore ">". Ovviamente è possibile omettere il testo, se però si omette l’indirizzo email e si lascia solo il testo apparirà un indirizzo del mittente molto strano, del tipo "nome inserito"@mioserver.it, che è ovviamente un indirizzo inesistente.
I caratteri "rn" sono necessari per una buona scrittura dell’intestazione del messaggio da inviare. Non bisogna mai ometterli quando si aggiungono comando all’intestazione. Questa informazione è il quarto argomento della funzione mail().
Possiamo anche inserire un indirizzo di default che il client di posta elettronica dell’utente deve usare se questo intende rispondere all’email. Per fare ciò si utilizza l’intestazione "Reply-to:". Vediamo come inserire tale intestazione nel nostro codice:
<?php
$mittente = 'From: "Il mio nome" <io@mioserver.it> rn';
$reply = "Reply-to: collega@mioserver.itrn";
$destinatario = "bob@server.com";
$oggetto = "email di prova";
$messaggio = "Ecco la mia prima email";
mail($destinatario, $oggetto, $messaggio, $mittente.$reply);
?>
E’ importante notare che il quarto argomento della funzione mail() è dedicato all’header del messaggio, quindi tutte i parametri di intestazione son da inserire qui. In quest’ultimo caso se l’utente intende rispondere alla mail che gli abbiamo inviato, la sua risposta sarà inviata all’indirizzo specificato in "Reply-to:", ovvero "collega@mioserver.it". Sottolineo che anche qui i codici "rn" sono importanti e soprattutto che l’indirizzo email associato a "Reply-to:" non deve necessariamente essere un indirizzo email situato sullo stesso server che ha inviato l’email.