No se si será la solución .. pero yo los salto de lineas los pondria al final de cada cabecera . incluida la ultima:
Código PHP:
$headers= "Content-type: text/$tipo; charset=iso-8859-1".$salto_server;
$headers .= "From: $nombreorigen<$mailorigen>".$salto_server;
$headers .= "Reply-To: $nombreorigen<$mailorigen>".$salto_server;
if (($cc!="")&&($cc!=null))
$headers .= "cc: $cc<$cc>".$salto_server;
if (($bcc!="")&&($bcc!=null))
$headers .= "Bcc: $bcc<$bcc>.$salto_server";
$headers .= "X-Mailer: PHP/".phpversion().$salto_server;
Pruebalo y nos cuentas . no pierdes nada ..
Y .. como comentario .. cuando se envian cabeceras HTTP .. entre las caberas (de typo, y otros detalles) a los propios datos en si hay q indicarle doble salto de linea \n\n .. (eso si lo hicieramos directo) ..
<especulacion>
Interamente no se como funcionará mail .. pero podria ser que mail() inserte un salto de liena entre el $mensaje .. y las $cabeceras .. y le haga falta el \n de mas ... Por lo menos siempre que he visto cabeceras extra de mail he visto q hasta la ultima cabecera incluye un salto de linea .. cosa q en tu codigo no lo usas ...
</especulacion>
Un saludo,