Bhe fin qui ci siamo, è un problema di locale, anche perchè io ho fatto così su mio server:

Codice PHP:
<?
$db 
"dati.html";
$nome "davide";
$cognome "cirillo";
$email "ciri94@hotmail.it";
$cap"20020";
$citta="lainate";

$oggetto ="Iscrizione al servizio email Mia Società";

//body
$mailbody "Messaggio in html";

//intestazioni html
$mailhtml "MIME-Version: 1.0
"
;
$mailhtml .= "Content-type: text/html; charset=iso-8859-1
"
;
$mailhtml .= "From: Mia Società";

if (
$nome != '' AND $cognome !='' AND $email != '' AND $cap != '' AND $citta != '') {
$fp=fopen($db,"a+");
fwrite($fp

-------- ' 


Nome: ' 
$nome 
Cognome: ' 
$cognome 
E-mail: ' 
$email 
Telefono: ' 
$telefono 
Indirizzo: ' 
$indirizzo 
CAP: ' 
$cap 
Città: ' 
$citta) or die('Errore nella scrittura del file');
mail($email$oggetto$mailbody$mailhtml);
fclose($fp);
echo 
"Grazie per l'iscrizione. 
Le abbiamo inviato un'email.
<meta http-equiv='refresh' content='5;URL=index.htm'>"
;
}
//se le variabili fondamentali sono vuote stampa un messaggio di errore reindirizzando l'utente (dopo 3 sec) alla pagina iniziale
else {
echo 
"Errore nel form, probabilmente ha lasciato qualche spazio bianco.


Tra pochi secondi sarà reindirizzato alla prima pagina per Ritentare l'iscrizione.<meta http-equiv='refresh' content='3;URL=index.htm'>"
;
}

?>
e funziona, quindi è un problema tuo non del codice =) (mi sembrava strano!)