Tu n'as pas l'impression que tu omets les headers dans la fonction mail ??
$headers, $entete ne sont jamais utilisés dans tes bouts de code.
mail($to, $subject, $message, $headers);
Et puis il faut choisir :
Tu veux envoyer un mail en texte : Content-type: text/plain; avec \r\n comme retour chariot
Tu veux envoyer un mail en HTML : Content-type: text/html; avec
comme retour chariot
Tu devrais revoir la doc de mail, il y a des exemples qu'il suffit de copier / coller.