Nullette Posté 26 Août 2010 Posté 26 Août 2010 Bonjour, je ne sais pas pour quelle raison le texte des messages envoyés depuis ma page de contact ne s'affichait plus dans ma boîte aux lettres. En regardant la source j'avais : begin 666 ajoutés guillemets.htmM0F]N:F]U<BP-#0H-#0I-86EL(&5N=F]YPZD_AT_9&5P=6ES(&QE('-I=&4_AT_8G5L M9V%R:6$M9G)A;F-E('!A<B!&<F%NPZ=O:7-E#0T*#0T*365S<V%G92 Z#0T* M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0T*8FS#J6)LPZD-#0HJ*BHJ :*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-#0H` ` end J'ai apporté quelques modifications, sans trop savoir quoi et en fouillant des scripts trouvés sur le net. Maintenant le texte s'affiche, mais pas correctement : envoyé Le code de l'entête est : $headers = 'From: '.$nom.' <'.$expediteur.'>'."\n"; $headers .='Reply-To:'.$nom.' <'.$expediteur.'>'."\n"; $headers .='Content-type: text/plain; charset="charset=utf-8"'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; J'ai fait des tests avec text/html, mais, là aussi le texte ne s'affiche pas. Avec text/plain, ça a l'air bon. Le code de toute la page est un peu long pour le publier dans son intégralité, mais peut-être avez-vous une idée ?
Melkior Posté 26 Août 2010 Posté 26 Août 2010 (modifié) C'est peut-être une histoire d'encodage : "é" encodé en UTF-8 sur 2 octets donne "é" Il faut passer en Iso ? A voir avec les plus calés Modifié 26 Août 2010 par Melkior
Nullette Posté 26 Août 2010 Auteur Posté 26 Août 2010 Merci. J'attends les lumières de quelqu'un. Le problème vient de je ne sais où, j'ai cette page depuis des années. Depuis peu je suis sur un serveur pou Php5. Je reçois des emails aussi bien en français qu'en cyrillique, donc si je change le charset en ISO, j'aurai un autre problème. Et puis, je n'y connais rien en php avec tous ces r, n, les point, les guillemets doubles ou pas, etc Il faut peut-être ajouter un utf_8_encode ou utf_8_decode, mais je ne saurais où. Edit 27 août J'avais mis deux fois charset. J'ai corrigé et ajouté MIME. $headers = 'From: '.$nom.' <'.$expediteur.'>'."\n"; $headers .='Reply-To:'.$nom.' <'.$expediteur.'>'."\n"; $headers .= 'MIME-Version: 1.0'."\n"; $headers .='Content-type: text/plain; charset=utf-8'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; Maintenant le texte s'affiche bien SAUF de (nom de l'expéditeur), qui s'affiche : Françoise
Nullette Posté 27 Août 2010 Auteur Posté 27 Août 2010 Salut, je ne sais plus quoi faire, après moults ajouts et suppressions de guillemets, virgules et autres Je me permets de vous soumettre tout le code (j'ai supprimé la grosse partie en html). C'est juste le nom de l'expéditeur qui ne s'affiche pas bien : De HélÚne et concernant l'email, si je fais "répondre : Le 27/08/2010 14:12, HélÚne a écrit : Le sujet et le texte du message s'affichent correctement. <?phpif (isset($_POST['envoye'])){ /* Recuperation des valeurs des champs du formulaire */ if (get_magic_quotes_gpc()) { $nom = stripslashes(trim($_POST['nom'])); $expediteur = stripslashes(trim($_POST['email'])); $objet = stripslashes(trim($_POST['objet'])); $message = stripslashes(trim($_POST['message'])); } else { $nom = trim($_POST['nom']); $expediteur = trim($_POST['email']); $objet = trim($_POST['objet']); $message = trim($_POST['message']); } /* Verifier si format adresse e-mail est correct */ $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; /* Expression reguliere permettant de verifier qu'aucun * en-tete n'est insrit dans nos champs */ $regex_head = '/[\n\r]/'; /* On verifie que tous les champs sont remplis */ if (empty($nom) || empty($expediteur) || empty($objet) || empty($message)) { $alert = 'Tous les champs doivent etre remplis'; } /* On verifie que le format de l'e-mail est correct */ elseif (!preg_match($regex_mail, $expediteur)) { $expediteur = "<span class='alert'>" . $expediteur . "</span>"; $alert = 'L\'adresse '.$expediteur.' n\'est pas valide'; } /* On verifie qu'il n'y a aucun header dans les champs */ elseif (preg_match($regex_head, $expediteur) || preg_match($regex_head, $nom) || preg_match($regex_head, $objet)) { $alert = 'Entetes interdites dans les champs du formulaire'; } /* Si aucun probleme et aucun cookie cr, on construit le message et on envoie l'e-mail */ elseif (!isset($_COOKIE['sent'])) { $to = 'moi_AT_site.com'."\r\n"; /* Construction du message */ $msg = 'Mail envoyé depuis le site '.$nom."\r\n\r\n"; $msg .= 'Message :'."\r\n"; $msg .= '***************************'."\r\n"; $msg .= $message."\r\n"; $msg .= '***************************'."\r\n"; /* En-tetes de l'e-mail */ $headers = 'From: '.$nom.' <'.$expediteur.'>'."\n"; $headers .='Reply-To:'.$nom.' <'.$expediteur.'>'."\n"; $headers .= 'MIME-Version: 1.0'."\n"; $headers .='Content-Type: text/plain; charset="utf-8"'."\n"; $headers .='Content-Transfer-Encoding: 8bit'."\n\n"; /* Envoi de l'e-mail */ if (mail($to, $objet, $msg, $headers)) { $alert = 'Votre message nous est bien parvenu !'; /* Creation cookie de courte dure (ici 120 secondes) pour eviter de * renvoyer un mail en rafraichissant la page */ setcookie("sent", "1", time() + 120); /* On detruit la variable $_POST */ unset($_POST); } else { $alert = 'Erreur d\'envoi de l\'e-mail, veuillez recommencer SVP'; } } /* Cas ou le cookie est cr et que la page est rafraichie, on dtruit la variable $_POST */ else { unset($_POST); }}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"><head> <title>Contact</title> </head><body><div id="conteneur"> <div id="headertop"> <h1>mon site</h1> <h2>Blabla</h2> </div> <!-- fin de l'headertop --> <div id="centre2"> <h1>Contact</h1> <?phpif (!empty($alert)){ echo '<p class="postinfo3">'.$alert.'</p>';}?><form action="contact.php" method="post"> <p> <label for="nom">Prénom, Nom :</label><br /> <input type="text" id="nom" name="nom" value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>" /> </p> <p> <label for="email">E-mail :</label><br /> <input type="text" id="email" name="email" value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>" /> </p> <p><label for="objet" class="strong">Objet du message :</label> </p> <p><input type="text" id="objet" name="objet" value="<?php echo (isset($_POST['objet'])) ? $objet : '' ?>" /> </p> <p> <label for="message">Le texte du message :</label><br /> <textarea id="message" name="message" cols="40" rows="4"><?php echo (isset($_POST['message'])) ? $message : '' ?></textarea> </p> <p> <input id="send" type="submit" name="envoye" value="Envoyer le courrier" /> </p></form> </body></html>
Ernestine Posté 27 Août 2010 Posté 27 Août 2010 Bonjour, Tu ne précises pas l'encodage dans le head de ta page. Il faut le faire : <head><title>Contact</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> Ca devrait marcher mieux
Nullette Posté 27 Août 2010 Auteur Posté 27 Août 2010 Bonjour Ernestine, si, si le code y est : <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Il ne figure pas car j'ai allégé le contenu de la page et supprimé ce qui est dans la partie html, pour ne pas afficher ici un texte trop long. C'est la partie php du formulaire qui pose problème. Pendant mes vacances je recevais des emails dont le texte ne s'affichait pas dans la boîte Thunderbird. J'ai cru que c'était à cause de mon PC portable Je n'avais pas touché à ce fichier. J'ai apporté des modifications ces jours-ci, maintenant le texte s'affiche, mais c'est juste le nom de l'expéditeur, lorsqu'il comporte une cédille ou un accent, qui ne s'affiche pas correctement. Le texte de message avec des mots accentués s'affiche correctement. Voici un exemple concret, à la réception : De s'affiche "Ernéstine" Le reste est bon. Mail envoyé depuis le site bulgaria-france.net par Ernéstine Message : *************************** Sûrement une petite erreur à corriger. ***************************
Nullette Posté 28 Août 2010 Auteur Posté 28 Août 2010 Salut, maintenant le nom de l'expéditeur s'affiche correctement, j'ai modifié au début : $nom = utf8_decode(stripslashes(trim($_POST['nom']))); Et comment se fait-il que l'objet s'affiche bien, sans avoir mis utf_8 decode (je parle bien sûr d'un objet qui serait un mot avec accent. Par contre, dans le texte du message, ça ne s'affiche pas comme il faut. Dois-je ajouter decode ici aussi ? /* Construction du message */ $msg = 'Mail envoyé depuis le site '.$nom."\r\n\r\n"; et comment ?
Nullette Posté 31 Août 2010 Auteur Posté 31 Août 2010 Bonjour, personne ne sait ? J'ai posé la question également dans le forum du Zéro, mais...je n'ai eu aucune réponse
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant