Se scrivi così la pover nl2br() non ha molto senso..io ho usato quei nomi di variabile per far capire; tu dovresti aggiungere
$testo = nl2br($testo);
oppure, per condensare due righe in una
$testo = stripslashes( nl2br($HTTP_POST_VARS["messaggio"]) );
A te non serve una guida al php; ti serve imparare ad usare la documentazione del php e un po' di tempo da dedicare a semplici prove.
Io ho imparato il php da solo, senza avere esperienze di programmazione, quindi il codice che scrivevo faceva schifo (ma il problema non era il php, era la programmazione).
Siccome i costrutti di base della programmazione sono uguali in tutti i linguaggi (javascript, actionscript, php, java, asp, ma anche nei fogli di stile xls.. [domani c'ho uno scritto]), ti consiglierei di studiarli un po'.
Se hai qualche domanda sulla programmazione, direi (ma va?) di aprire un nuovo topic