Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de caractères accentués dans un mail

Sujet résolu
    21 mai 2011 à 13:38:07

    Bonjour,

    Je souhaiterai vos avis et conseils à propos du script suivant.
    J'ai un Mac et quand je fais un test en m'envoyant un mail à moi-même via le formulaire, le mail reçu est bon (sans problème de caractères accentués).
    J'ai réalisé un site pour un ami Québécois qui a un PC et avec le même script les caractères accentués s'affichent mal chez lui.

    Exemple :
    é = é
    è = Ã
    à = è

    Il y a visiblement un problème d'encodage entre UTF-8 et ISO.
    J'ai parcouru de nombreux forums à la recherche de la solution, mais malgré bien des essais je n'arrive pas à résoudre ce problème.

    Merci de votre aide.

    <!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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Document sans titre</title>
    </head>
    
    <body>
    <?php
    		  // Encodage d'une page html en charset=UTF-8
    		  header('Content-type: text/html; charset=UTF-8');
    		  
    		  // Mettre votre adresse email ci-dessous :
    		  $to = 'monadressemail@hotmail.com';
    		  
    		  // Les information de l'expéditeur
    		  
    		  $name = stripslashes($_POST['name']); // récupère le nom de l'expéditeur
    		  $email = stripslashes($_POST['email']); // récupère l'adresse mail de l'expéditeur
    		  $subject = stripslashes($_POST['subject']); // récupère le sujet du mail
    		  
    		  // Le message que vous allez recevoir dans votre boîte mail
    
    		  $msg  = "Envoyé par : $name \r\n";  // le nom de l'expéditeur
    		  $msg .= "e-Mail : $email \r\n"; // l'adresse mail de l'expéditeur
    		  $msg .= "Sujet : $subject \r\n\n"; // le sujet
    		  $msg .= "Message : \r\n\n".stripslashes($_POST['message'])."\r\n\n";  // le message
    		  
    		  // Informations optionnelles sur l'expéditeur
    
    		  $msg .= "Informations sur l'expéditeur : \r\n\n"; // Titre
    		  $msg .= "Adresse IP : ".$_SERVER["REMOTE_ADDR"]."\r\n"; // adresse IP de l'expéditeur
    		  $msg .= "Navigateur : ".$_SERVER["HTTP_USER_AGENT"]."\r\n"; // informations sur le navigateur
    		  $msg .= "Page d'expédition : ".$_SERVER["HTTP_REFERER"]; // lien d'expédition
    		  
    		  // Fin Informations optionnelles
    				
    		  if  (mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")){
    		  
    		  // echo "<h3>Your message has been sent, Thanks! / Votre message a été envoyé, Merci !</h3>"; // message affiché si le mail est bien envoyé
    		  
    		  header('Location: http://www.monsite.com/merci.shtml'); // redirection vers la page de remerciement
    		  
    		  exit();
    		  
    		  }else{
    			  
    		  echo "<h3>L'envoi a échoué !</h3>";  // message affiché s'il y a une erreur
    		  
    		  }	  
    		  
    ?>
    </body>
    </html>
    
    • Partager sur Facebook
    • Partager sur Twitter
      21 mai 2011 à 13:51:29

      Salut,
      As-tu vérifié l'encodage du fichier ? Est-il en utf-8 sans BOM? C'est peut-être la source de tes problèmes.
      • Partager sur Facebook
      • Partager sur Twitter
        21 mai 2011 à 13:58:11

        Salut,

        Merci de ton aide.

        La page HTML qui contient le formulaire est encodée comme suit :

        <!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">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        
        • Partager sur Facebook
        • Partager sur Twitter
          21 mai 2011 à 14:00:56

          C'est de l'UTF-8 affiché comme de l'ISO, ça. Il faut faire la même chose pour les entêtes du mail (Content-Type: text/plain; charset=utf-8).

          if  (mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nContent-Type: text/plain; charset=utf-8\r\nReturn-Path: $email\r\n")){
          


          Où avez-vous vu que le mail reprenait celui du script (ce n'est pas les mêmes protocoles en plus) ? Mais, après, ça dépend aussi du client (un webmail, notamment, pourrait ne pas l'honorer s'il est différent de son ossature).
          • Partager sur Facebook
          • Partager sur Twitter
            21 mai 2011 à 14:02:13

            Il l'a fait. Jones-jr, je ne te parles pas du code, mais de l'encodage de ton fichier par ton éditeur de texte. Sous notepad++ : encodage > Encoder en utf-8 (sans bom)
            • Partager sur Facebook
            • Partager sur Twitter
              21 mai 2011 à 14:18:38

              Citation : julp

              Où avez-vous vu que le mail reprenait celui du script (ce n'est pas les mêmes protocoles en plus) ? Mais, après, ça dépend aussi du client (un webmail, notamment, pourrait ne pas l'honorer s'il est différent de son ossature).



              Salut julp,

              Je viens de faire un essai avec ton correctif, mais il faut que j'attende la réponse de mon ami Québécois pour savoir si ça a marché...

              J'avoue que je ne comprend pas très bien le sens de ta citation (ci-dessus) à propos des protocoles...



              C'était bien ça !!!! Merci à vous deux ! ;)
              • Partager sur Facebook
              • Partager sur Twitter

              Problème de caractères accentués dans un mail

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown