PHP et mail : codage charset=utf-8

Résolu
Bonjour,

Dans mon code d'envoi de courrier supposé contenir des lettres exotiques, j'ai mis :
<?php
...
$entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=utf-8\r\n";
...
if(!mail($vers_mail, $sujet, $message, $entete))
...
?>

A la réception du mail, j'obtiens des signes cabalistiques à la place des accents. Je me demande pourquoi mon charset=utf-8 n'a pas d'effets.

Je vous remercie de votre aide.

13 réponses

  1. J'ai trouvé : les textes du mail doivent être traités par la fonction utf8_decode() avant d'être envoyés.
    1. Merci de votre réponse. Je viens de tester. Le problème d'affichage n'a pas été résolu.
      1. Pourquoi mettre :
        if(!mail($vers_mail, $sujet, $message, $entete))
        

        Avec un point d'exclamation ?
        Peut être faut-il spécifier tout ceci :
             $entete='From: "nom"<adresse@fai.fr>'."\n";
             $entete.='Reply-To: adresse_de_reponse@fai.fr'."\n";
             $entete.='Content-Type: text/html; charset="iso-8859-1"'."\n";
             $entete.='Content-Transfer-Encoding: 8bit'; 
        
        1. J'ai fait copier-coller trop long. La dernière ligne ne fait pas partie du code d'envoi du mail.
          Oui, j'ai bien tout spécifié.
          1. Bon c'est peut être bizarre, mais à chaque fois que j'envoi un mail j'utilise iso et non utf-8 comme ceci :
            $entete .="Content-type: text/html; charset=\"iso-8859-1\"\r\n";
            

            Et tout fonctionne nickel
            1. même avec cette entête j'ai le même probleme, le passage à la ligne ne marche pas.
              $entete .= "Content-type: text/html; charset=\"iso-8859-1\"\r\n";
              $Sujet = " SUJET TESTE";

              $Msg .= "information 1\r\n\r\n";
              $Msg .= "information 2 \r\n";
              $Msg .= "teste 1\r\n\r\n ";
              $Msg .= "teste 2 \r\n\r\n";

              mail($email, $Sujet, $Msg,$entete);
          2. Je crois que iso-8859-1 est le code des caractères latins (européens). Mes mails à recevoir étant sensés contenir des caractères exotiques (chinois, japonais, etc...), il faut déclarer le code utf-8.
            1. Cette page concerne les bases de données et les pages internet. Je n'ai pas de problème de ce côté-là. Il n'y a que les mails qui me posent problème...
              1. Bonjour,
                Essayes de rajouter sa :
                    $entete.='Content-Transfer-Encoding: 8bit';