De tu primer ejemplo patouc .. por qué no añades simplemente las cabeceras HTTP que te hacen falta:
Y así con el resto de cabeceras que puedes apreciar en la FAQ que te mencioné?
Si te fijas . el ejemplo de bunker sólo se diferencia con el tuyo en lo que respecta a la función mail en:
mail("$recipiente", "$asunto", "$msg", "FROM: $email");
El resto de validaciones y demás ya dependerá de tu caso concreto ... Por ejemplo .. bunker "asume" como globlales toda variable externa al script (ese $nombre y demás) .. por ende si tu en tus servidores usas: register_globals a OFF (en tu php.ini) no te va a funcionar .. Usa simpre los arrays superglobales: $_GET, $_POST,etc (o $HTTP_xxx_VARS mínimo) (tambien por tu seguridad .. una de las primeras FAQ's del foro PHP habla del tema).
Un saludo,