Tutte quelle operazioni di assegnazione a $messaggio le puoi ridurre ad una sola:
Codice PHP:
$corpo = "<head>
<title>Message</title>
<style type=\"text/css\">
.Stile1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
</style>
</head>
<body>
<span class=\"Stile1\"><u>[b]Message reçu de:[/b]</u></span>
<p class=\"Stile1\">
$nome $cognome
No. inscription à l'ordre.: $iscrizione
Tél.: $telefono
Adresse postale:
$indirizzo
E-mail: <a href=\"mailto:$email_mittente\">$email_mittente</a>
</p>
<span class=\"Stile1\">[b]Quéstion:[/b] $question</span>
<span class=\"Stile1\"><u>[b]Texte du message:[/b]</u></span>
<span class=\"Stile1\">$testo</span>
</body>";
Inoltre puoi rettificare:
Codice PHP:
$indirizzo = str_replace("\n", "
", $indirizzo);
$testo = str_replace("\n", "
", $_POST['message']);
// con questo:
$indirizzo = nl2br($indirizzo);
$testo = nl2br($_POST['message']);
Anche perché sui sistemi Linux il carattere di interruzione riga è un newline (\n), ma su Windows devi considerare anche il carriage return (\r), e se sostituisci solo i newline (\n) rimane comunque un carriage return. Proprio per questo esiste la funzione nl2br che ne tiene conto, è più pratica e fatta apposta.
Codice PHP:
// L'operazione seguente non serve a nulla, sostituisce gli apici con gli apici.
$testo = str_replace("'", "'",$testo);
// Puoi annullare i caratteri speciali con:
$testo = htmlspecialchars($testo);
Per quanto riguarda il problema di visualizzazione, dipende dagli header della mail, che non sono completi.
Qui hai una buona guida su come compilare correttamente una mail in formato HTML con PHP:
http://php.html.it/articoli/leggi/91...-html-con-php/