Inviare una e-mail con PHP è molto semplice, ma costruendo applicazioni di un certo livello vi occorrerà senzaltro dover inviare e-mail in formati particolari e con uno o più allegati.
Per fare questo useremo la funzione nativa mail(), che si può tranquillamente gestire dando un’occhiata alla documentazione ufficiale.
Lo scopo principale di questo capitolo quindi, è quello di fornirvi le conoscenze per poter gestire anche e-mail più complesse, ad esempio in formato HTML con più file allegati.
Vediamo ora il prototipo della funzione mail() :
bool mail ( string destinatario, string oggetto, string messaggio [, string header_addizionali [, string parametri_addizionali]] )
Per inviare una e-mail standard è quindi sufficiente il codice che segue :
<?php
$inviata = mail("john.doe@domain.com", "Oggetto del messaggio", "Testo del messaggio");
if ($inviata) echo "Email inviata con successo";
else echo "Errore durante l'invio dell'email";
?>
Per inviare e-mail più complesse invece, sarà necessario specificare un’intestazione (header) passandola per parametro alla funzione mail().
Nell’header dell’e-mail è possibile specificare dei parametri per stabilire svariate impostazioni, vediamo le principali :
- MIME-Version – Indica quale standard viene usato
- Content-Type – Indica di che tipo è il contenuto del messaggio
- Content-Transfer-Encoding – Stabilisce il metodo da utilizzare per rappresentare i dati (es. 7bit)
- From – Indica il mittente del messaggio
- Reply-To – Specifica l’e-mail predefinita a cui rispondere
- Cc – Indirizzi a cui inviare l’e-mail in copia carbone
- Bcc – Indirizzi a cui inviare l’e-mail in copia carbone
- Date – Data di invio dell’e-mail
- X-Mailer – Software utilizzato per l’invio dell’e-mail
Il codice dell’esempio seguente si occuperà di inviare una e-mail in formato HTML, impostando come mittente l’indirizzo mittente@dominio.it :
<?php
define("EOL", "rn");
$header = "MIME-Version: 1.0" . EOL;
$header .= "Content-Type: text/html" . EOL;
$header .= "From: mittente@dominio.it";
$object = "Oggetto del messaggio";
$message = "Linea 1<br />Linea 2<br />Linea 3";
mail("posta@realizzazione-sito.info", $object, $message, $header);
?>
Per garantire un corretto funzionamento dello script è necessario separare i parametri dell’header con un EOL (End Of Line), che deve corrispondere ai due caratteri di escape rn, anche se alcuni sistemi Unix potrebbero funzionare con il solo n.
Eseguendo lo script soprastante si ottiene questo risultato.
E’ possibile inoltre specificare più destinatari per la stessa e-mail senza agire sull’header, ma semplicemente separando gli indirizzi con una virgola.
<?php $destinatari = "Mario Rossi <mario.rossi@dominio.it>, Luca Verdi <luca.verdi@dominio.it>"; $destinatari .= ", John Doe <john.doe@domain.com>"; mail($destinatari, "Oggetto", "Messaggio"); ?>
Non è obbligatorio racchiudere gli indirizzi fra i tag < >, ma è necessario se volete assegnare un nome al proprietario dell’indirizzo.
Nel prossimo capitolo vedremo come è possibile inviare e-mail con file allegati.
Versione originale dell’articolo
Lezione Precedente -> Guida Php – Classi per l’upload di file
Lezione Successiva -> Guida Php – Inviare email con allegati

