PHP et mail : codage charset=utf-8

Résolu
dimi3 Messages postés 278 Statut Membre -  
 c0boleis -
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. dimi3 Messages postés 278 Statut Membre 20
     
    J'ai trouvé : les textes du mail doivent être traités par la fonction utf8_decode() avant d'être envoyés.
    7
  2. dimi3 Messages postés 278 Statut Membre 20
     
    Merci de votre réponse. Je viens de tester. Le problème d'affichage n'a pas été résolu.
    0
  3. Melooo Messages postés 1476 Statut Membre 84
     
    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'; 
    
    0
  4. dimi3 Messages postés 278 Statut Membre 20
     
    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é.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Melooo Messages postés 1476 Statut Membre 84
     
    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
    0
    1. c0boleis
       
      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);
      0
  7. dimi3 Messages postés 278 Statut Membre 20
     
    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.
    0
  8. dimi3 Messages postés 278 Statut Membre 20
     
    Merci pour ce lien... Tout ça me parait bien compliqué !
    0
  9. dimi3 Messages postés 278 Statut Membre 20
     
    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...
    0
  10. Melooo Messages postés 1476 Statut Membre 84
     
    La page ou se situe l'envoi de mail est également en utf-8 ?
    0
  11. dimi3 Messages postés 278 Statut Membre 20
     
    Oui...
    0
  12. Melooo Messages postés 1476 Statut Membre 84
     
    Bonjour,
    Essayes de rajouter sa :
        $entete.='Content-Transfer-Encoding: 8bit';
    
    
    -1