Perché $_POST['oggetto'] e $_POST['messaggio'] non sono settate, quindi vengono considerate vuote, solo che sul server online non ti da errore perché probabilmente il livello di messaggi d'errore è impostato più basso che sul tuo PC.
Inoltre se non specifichi il campo from e replyto, il server ci mette l'indirizzo di default che è quello che ti ritrovi adesso, ovvero 'me@localhost.com'