Formulaire HTML + PHP, affichage incorrect

Bonjour à tous,

J’ai mis en place un site web sur lequel j’ai un formulaire en HTML + PHP avec la fonction mail.

Tout fonctionne, sauf l’affichage des mails est bizarre. Quand je les ouvre dans thunderbird, la dernière version beta, sous mac, il s’affiche correctement (gras, soulignement…).

En revanche, quand ma collègue l’ouvre sur son ordinateur sous outlook dernière version ou thunderbird, les lignes de code s’affichent.

Je vous colle le code de la page de contact, pourriez-vous m’aider? Je connais un tout petit peu de php par les tutos que j’ai suivi pour la fonction mail, je vous serai reconnaissant de ne pas utiliser trop de termes relatifs au php.

Bon WE à tous,

Vermichou

<?php
$adresse="***@**.*";
$from="From: ***<info@*****.fr>\r\n";
$from.="Reply-To: $nom <$email>\n";
$from.="X-priority:3\n";
$headers .= "'Content-Type: text/html; charset=iso-8859-1; Content-Transfer-Encoding: 8bit\n\n'\n"; 
$texte="<html>";
$texte.="<p>$civilite $nom $prenom vous a contacté via le site Internet.<p>";
$texte.="<p><strong>Objet de la demande:</strong> $objet<p>";
$texte.="<p>Voici son message:<strong><p>$message</p></strong></p>";
$texte.="Coordonnées:<p>$civilite $nom $prenom</p>";
$texte.="<p>Société: $societe</p>";
$texte.="<p><a href=\"mailto:$email\">$email</a>";
$texte.="<p>Téléphone: $telephone</p>";
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";  
if (mail($adresse,"Contact via le site : $objet",$texte,$from))
header('Location: [www.*****.fr...](http://www.*****.fr/contactok.html');)
?>

J’ai également essayé cette version pour un résultat identique:

<?php
$mail = '******@*****.fr'; // Déclaration de l'adresse de destination
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // O,n filtre les serveurs qui bugs
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML
$message_txt = "$message";
$message_html = "<html><head></head><body><b>$prenom $nom</b> de la soci&eacute;t&eacute; <b>$societe</b> vous a envoy&eacute; un message.<br><br><i>$message</i><br><br>Coordonn&eacute;es:<br><br><b>$telephone, <a href='mailto:$email'>$email</a></b></body></html>";
//==========
 
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========
 
//=====Définition du sujet
$sujet = "Contact via le site: $objet";
//=========
 
//=====Création du header de l'e-mail
$header = "From: \"*****\"<info@******.fr>".$passage_ligne;
$header.= "Reply-to: \"$prenom $nom\" <$email>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message
$message = $passage_ligne.$boundary.$passage_ligne;
//=====Ajout du message au format texte
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
 
//=====Envoi de l'e-mail
if(mail($mail,$sujet,$message,$header))
header('Location: [www.********.fr...](http://www.********.fr/contactok.html');)
//==========
?>

Encore merci à tous !!
Message edité le 05/09/2009 à 15:04

Parce que Thunderbird est sympa et qu’il saute à la ligne les entêtes pour toi :

En premier lieu : ftp.rfc-editor.org…[/url] (en français ici : [url=http://abcdrfc.free.fr/rfc-vf/rtf/rfc2822.rtf]abcdrfc.free.fr… )

Donc tes lignes doivent se terminer par \r\n dans tous les cas.

Dans ton premier exemple, c’est faux car tu fais cela :


$from="From: ***<info@*****.fr>\r\n";
$from.="Reply-To: $nom <$email>\n";
$from.="X-priority:3\n";
$headers .= "'Content-Type: text/html; charset=iso-8859-1; Content-Transfer-Encoding: 8bit\n\n'\n";

Au lieu de :

$from ="From: ***<info@*****.fr>\r\n";
$from .="Reply-To: $nom <$email>\r\n";
$from .="X-priority:3\r\n";
$from .= "Content-Type: text/html; charset=iso-8859-1\r\n";
$from .= "Content-Transfer-Encoding: 8bit\r\n";

Et l’autre, il donne quoi ?
Edité le 05/09/2009 à 15:06

Bonjour et merci pour ta réponse !!

L’autre donne la même chose… à savoir que les deux donnent un affichage avec toutes les lignes de code au dessus…

Après il y a tellement de tutoriels sur Internet qui donnent des sons de cloche différents voir contradictoires, qu’il est difficile de savoir à quoi s’en tenir…


Voici ce que donne en détail l'affichage du message:

Content-Type: text/html
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on dns26.com
X-Spam-Level: **
X-Spam-Status: No, score=2.8 required=7.0 tests=HTML_20_30,HTML_MESSAGE,
MIME_HTML_ONLY,PRIORITY_NO_NAME autolearn=no version=3.0.4

Expéditeur: Monsieur Michel *******, de la société ******

Coordonnées: michel.*******@*****.net, ********

Bonjour Sarah,

Est-ce que l’affichage des messages est meilleur?

Cordialement,

Michel

Une petite idée?.. :confused:

up… :confused: