forse no hai letto bene!
ho scritto che è una parte di codice, e quindi le variabili mancanti non le vedi xké non le ho scritte; ho scritto anche che il primo codice dà il risultato voluto, mentre il secondo no.
cmq per tua soddisfazione l'header viene caricato in precedenza, così:

codice:
$random_hash = md5(date('r', time()));
$headers = "From: miamail@esempio.it\r\nReply-To: miamail@esempio.it"; 
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
e poi c'è altro...e altro...codice.
in sostanza ho trovato sul web questo codice 'funzionante' e che così com'è non è utilizzabile per costruire una funzione o una classe, ma sono riuscito a compattarlo, togliendo anche l'utilizzo del buffer, ma nei casi simili a quello che ho esposto, funziona malamente....
spero di aver chiarito.