Alessandro mi ha preceduto e quello che dice è giustissimo. Per ovviare all'inconveniente dei client non configurati per ricevere mail contenenti HTML basta inviare una mail con due testi alternativi, uno HTML e l'altro di puro testo.
Per fare ciò si utilizza il "Content-Type multipart/alternative" che indica che il messaggio è costituito da più parti alternative tra di loro.
Per dividere le varie parti viene utilizzato un separatore chiamato Boundary. Esso è semplicemente una stringa arbitraria unica all'interno del messaggio. Essa deve iniziare con due trattini "--".
La stessa stringa servirà anche come terminatore del messaggio ed in questo caso terminerà con due trattini "--"
In genere il separatore (Boundary) si ottiene utilizzando la funzione md5() e la funzione time() per generare una stringa pseudocasuale.
Un esempio di codice per l'invio di una mail multipart/alternative è il seguente:
PHP:
$boundary = "==Boundary_".md5(time());
$header = "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/alternative;\n";
$header .= " boundary=\"$boundary\";\n\n";
// Parte del messaggio solo testo
$msg = "--$boundary\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "Inserire qui il messaggio in formato solo testo.\n\n";
// Parte del messaggio HTML
$msg .= "--$boundary\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "Inserire qui il messaggio in formato HTML\n";
$msg .= "--$boundary--\n";