Hay mucho código y ahora no tengo el tiempo, pero mañana trataré de miralo mejor.
Un consejo, trata de intercalar sentencias echo, antes de definir los headers, para ver que tienes en las variables en cada punto de tu programa, así lo verás impreso en la pantalla directamente.
De todos modos he visto alguna incoerencia como por ejemplo que en $mfinal nunca será nulo ya que $mfinal .= $retorno si lo concatenas con las cadenas de retorno aunque no hayan escrito nada tu le cargas luego los valores del retorno de carro...
Visita la web de
www.php.net para ver mar ejemplos de aplicacion sobre la función mail.
Suerte!