IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Fonction Mail - Soucis de Charset


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Lost In Translation
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 166
    Par défaut [Mail] Fonction Mail - Soucis de Charset
    Bonjour,

    J'ai actuellement un soucis de charset lors d'un envoi automatique de mail avec la fonction mail()
    Je suppose que j'ai du oublier quelque chose à quelque part, sachant que j'ai le même problème sur 2 hébergeurs différents, ça vient de moi ^^

    Voici donc mon formulaire html :
    J'ai remplacé les portions inutiles du code par des [...].

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <!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" lang="en">
      <head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
     
        [...]
     
      </head>
     
      <body>
     
       [...]
          <form action="contact.php" method="post" id="myForm">
     
            <fieldset>
     
              <legend>Formulaire de Contact</legend>
     
              <div class="espacement"></div>
     
              <p class="deux_colonnes">
                <label for="nom">Nom :</label>
                <input type="text" id="nom" name="nom" class="validate['required']"/>
              </p>
     
              <p class="deux_colonnes">
                <label for="prenom">Prénom :</label>
                <input type="text" id="prenom" name="prenom" class="validate['required']"/>
              </p>
     
              <p class="deux_colonnes">
                <label for="mail">Adresse E-Mail :</label>
                <input type="text" id="mail" name="mail" class="validate['required','length[5,-1]','email']" />
              </p>
     
              <p class="deux_colonnes">
                <label for="message">Message :</label>
                <textarea id="message" name="message" rows="10" cols="40" class="validate['required']"></textarea>
              </p>
     
              <p class="deux_colonnes">
                <label for="securite">Sécurité, combien font 2+3 ? :</label>
                <input type="text" id="securite" name="securite" class="validate['required','number','spamcheck']"/>
              </p>
     
              <p class="deux_colonnes">
                <input type="submit" value="envoyer" />
              </p>
     
            </fieldset>
     
          </form>
     
        [...]
     
      </body>
     
    </html>

    Et voici le php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
    [...]
      // Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail
      else
      {
        /* Destinataire (votre adresse e-mail) */
        $to = '**********************';
     
        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis la page CONTACT par '.$prenom.' '.$nom."\r\n\r\n";
        $msg .= 'Voici le message :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";
     
        /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' '.$prenom.' <'.$expediteur.'>'."\r\n\r\n";
        $headers .='Content-Type: text/html; charset="utf-8"'."\n";
     
        /* Envoi de l'e-mail */
        if(mail($to, 'Contact - *******', $msg, $headers))
        {
          header("location:succes.html");
        }
        else
        {
          header("location:echec.html");
        }
      }
    }
    ?>

    Le rendu du mail donne ça :

    Content-Type: text/html; charset="utf-8"


    Bonjour,

    Ce mail a été envoyé depuis ************ par Serj A l'Ombre du temple de Dalriel

    Voici le message :
    ***************************
    é"'(-è_çà à à à à à à à Ã
    ***************************
    Le content-type est en fait inclus directement dans le corps du message... Ce qui semble à mon avis être une erreur... Pourtant, j'estime ne rien avoir fait motivant ce soucis :p

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Par défaut
    et avec un charset="iso-8859-1" ??
    Ou alors tu encodes ta chaine à l'aide de utf8_encode()!

  3. #3
    Membre confirmé Avatar de Lost In Translation
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 166
    Par défaut
    et avec un charset="iso-8859-1" ??
    Ca ne change absolument rien

    Ou alors tu encodes ta chaine à l'aide de utf8_encode()!
    Le truc, c'est que logiquement, les valeurs postées sont toutes sensées être en UTF8, non ?
    Le charset de mon HTML est bien UTF8... L'encodage des fichiers est aussi utf8.

    Je vais tester et j'éditerais en fonction du résultat.

    EDIT

    Ca n'a rien changé... Sauf que les caractères "spéciaux" sont d'une autre nature maintenant...
    M'enfin ça reste des caractères foireux

    Content-Type: text/html; charset="utf-8"


    Bonjour,

    Ce mail a été envoyé depuis*************** par Angela Elwinder

    Voici le message :
    ***************************
    &é"'(-è_çà)
    ***************************

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Par défaut
    Je n'avais pas lu ton premier post jusqu'au bout! En effet le content-type dans le corps du message indique un soucis!! Comme ça je dirai peut-être la gestion des apostrophes dans tes champs variables. Essaies de générer un mail sans apostrophe...

  5. #5
    Membre confirmé Avatar de Lost In Translation
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 166
    Par défaut
    Voilà un message sans apostrophe.
    Ca n'a rien changé, mais ça n'a pas empiré =)

    On sait donc que ça ne vient pas des apostrophes

    Content-Type: text/html; charset="utf-8"


    Bonjour,

    Ce mail a été envoyé depuis ******** par Angela Elwinder

    Voici le message :
    ***************************
    un email sans apostrophe

    voilà , y a même des accents en prime
    ***************************

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Par défaut
    Et avec ta ligne transformée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers = 'From: '.$nom.' '.$prenom.' <'.$expediteur.'>'."\r\n\r\n".'Content-Type: text/html; charset="utf-8"'."\n";

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/03/2009, 19h21
  2. [Mail] [fonction mail] Pièces jointes
    Par poussinphp dans le forum Langage
    Réponses: 2
    Dernier message: 30/12/2005, 12h15
  3. [Mail] Fonction mail() et le spam
    Par tonios dans le forum Langage
    Réponses: 1
    Dernier message: 12/12/2005, 22h51
  4. [Mail] Fonction mail() et pièce jointe
    Par allyson dans le forum Langage
    Réponses: 16
    Dernier message: 09/11/2005, 15h05
  5. Réponses: 5
    Dernier message: 29/10/2005, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo