Moi je ne pense pas que t'as methode est la meilleur. Mon point de vu se tournerais plutot sur une methode utilisant deux pages.
L'une contenant le formulaire, l'autre les fonctions neccessaire a la verification du formulaire et à l'envoie.
-> Si tous les champs sont bon: Ok, on envoie le mail et on redirige sur la page du formulaire echo"Mail envoyé";
-> Si il manque des champs: Erreur, on met les champs deja remplit en session et on redirige vers la page d'envoie echo"Veuillez renseigner tous les champs";
-> Si tous les champs ok, alor qu'il y avait deja eu une erreur on efface les variable session. unset @$_SESSION['message'], etc....
Voila mon point de vu si vous desirez les sources je les mettrais.