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

Discussion :

Problème d'accents dans les mail envoyés

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Problème d'accents dans les mail envoyés
    Bonjour,

    J'ai parcouru les forums de developpez.net au sujet des problèmes d'accent, d'encodage de chaines de caractères dans les mails envoyés grâce à la fonction php mail();
    Je n'ai pas encore trouvé de solution

    Dans mon site en charset UTF-8 :
    J'ai fait un formulaire de contact, qui, lorsqu'il est correctement rempli et soumis, envoie un mail automatique au webmaster et à l'utilisateur.
    De mon côté, je reçois le mail sur l'appli Mail de Apple, ou sur ma messagerie en ligne Gmail : je n'ai pas rencontré de problème de lecture.

    Mais un ami, qui reçoit sur son Outlook, ou sur sa messagerie Free, reçoit les mails avec tous les accents mal retranscris. Ca donne ça chez lui :

    Bonjour d'air d'eau et "avec" 5 € d'air d'eau et "avec" 5 € , vous avez
    laissé un message sur le site MACHIN.fr :

    d'air d'eau et "avec" 5 € d'air d'eau et "avec" 5 € d'air d'eau et "avec"
    5 € d'air d'eau et "avec" 5 €

    Vous recevrez une réponse au plus vite


    Pour vous éclaircir sur mon problème, voici un extrait de mon code php :
    Code : 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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    
    /***** Pour les champs pré-remplis du formulaire *****/
    $email_exp = htmlspecialchars($_POST['email']);
    
    $prenom = htmlspecialchars($_POST['prenom']);
    $prenom = stripslashes($prenom);
    
    $nom = htmlspecialchars($_POST['nom']);
    $nom = stripslashes($nom);
    
    $objet = htmlspecialchars($_POST['objet']);
    $objet = stripslashes($objet);
    
    $msg = htmlspecialchars($_POST['message']);
    $msg = stripslashes($msg);
    
    /******************************************************
    ***************** F O R M U L A I R E *****************
    *******************************************************/		
    $form ='
    <form method="POST">
    	<fieldset>
    	<legend>Vos coordonnées</legend>
    		<label for="nom">Nom :</label>
    		<input type="text" name="nom" id="nom" tabindex="10" value="'.$nom.'" size="25" maxlength="40" />
    		<span class="legende">obligatoire</span>
    		<br/>
    		<label for="prenom">Prénom :</label>
    		<input type="text" name="prenom" id="prenom" tabindex="20" value="'.$prenom.'" size="25" maxlength="40" />
    		<br/>
    		<label for="email">E-mail :</label>
    		<input type="text" name="email" id="email" tabindex="30" value="'.$email_exp.'" size="25" maxlength="60" />
    		<span class="legende">obligatoire</span>
    		<br/>
    	</fieldset>
    	<fieldset>
    	<legend>Votre message</legend>
    		<label for="objet">Objet :</label>
    		<input type="text" name="objet" id="objet" tabindex="40" value="'.$objet.'" size="60" maxlength="50" />
    		<br/>
    		<label for="message">Message :</label>
    		<textarea name="message" id="message" tabindex="50" value="" rows="15" cols="50" maxlength="255" >'.$msg.'</textarea>
    		<br/>
    		<input type="submit" name="envoyer" tabindex="60" value="Envoyer" />
    	</fieldset>
    </form>';
    
    
    /******************************************************
    ***************** T R A I T E M E N T *****************
    *******************************************************/
    
    /**** On teste si le visiteur a soumis le formulaire de contact ****/
    if (isset($_POST['envoyer']) && $_POST['envoyer']=='Envoyer')
    {
    	/* Si les 3 champs obligatoires existent et ne sont pas vides */
    	if (isset($_POST['nom']) && isset($_POST['email']) && isset($_POST['message']) && !empty($_POST['nom']) && !empty($_POST['email']) && !empty($_POST['message']))
    	{
    		/* si l'adresse mail est valide */
    		if(VerifierAdresseMail($email_exp)==TRUE)
    		{
    			//echo '<p class="confirm">L\'adresse mail '.$email_exp.' est valide.</p>';
    			echo '<p class="confirm">Merci '.$prenom.'&nbsp;'.$nom.'</p>';
    			echo '<p class="confirm">Le message suivant a bien été envoyé :</p>';
    			if (!empty($_POST['objet'])) echo '<p><strong>Objet : </strong>'.$objet.'</p>';
    			echo '<p>'.nl2br($msg).'</p>';
    			echo '<p class="confirm">Vous recevrez une réponse au plus vite à cette adresse :</p>';
    			echo '<p>'.$email_exp.'</p>';
    			
    /**** Entêtes du mail au WEBMASTER ****/
    $webmaster = 'contact@webmaster.fr';
    $entetemail = "From: ".$webmaster." \n"; // Adresse expéditeur
    $entetemail.= "Reply-To: ".$email_exp." \n"; // Adresse de retour
    $entetemail.= "X-Mailer: PHP/".phpversion()." \n" ;
    			
    		
    			//Attention : \n\n ne fonctionne qu'avec les double-quotes
    			$to = 'contact@webmaster.fr';
    			$objet = 'Message sur formulaire de contact MACHIN.fr';
    			$contenu = "L'utilisateur ".stripslashes($_POST['prenom'])." ".stripslashes($_POST['nom'])." a laissé un message sur le site MACHIN.fr :\n\n".stripslashes($_POST['message'])."\n\n Vous pouvez lui répondre ici : ".$email_exp;
    			$from = $entetemail;
    			
    			mail($to, $objet, $contenu, $from))
    				
    			
    /**** Entêtes du mail à l'UTILISATEUR ****/
    $entetemail2 = "From: ".$webmaster." \n"; // Adresse expéditeur
    $entetemail2.= "X-Mailer: PHP/".phpversion()." \n" ;
    		
    			$to = $email_exp;
    			$objet = 'A/R de votre message sur formulaire de contact MACHIN.fr';
    			$contenu = "Bonjour ".stripslashes($_POST['prenom'])." ".stripslashes($_POST['nom'])." , vous avez ";
    			$contenu .= "laissé ce message sur le site MACHIN.fr :\n\n".stripslashes($_POST['message'])."\n\n";
    			//$mailTxt .= stripslashes(str_replace("\"", "'", $_SESSION['obs1']))."\n"; 
    			$contenu .= "\n\nMerci ! \n\nVous recevrez une réponse au plus vite.";
    			$from = $entetemail2;

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Pour détailler le problème, je précise que mon site est en charset utf-8

    Pour tenter de résoudre le pb d'accent, j'ai suivi ce tuto :
    http://php.developpez.com/faq/?page=mail#envoi-mail

    et j'ai tenté les 2 expériences : le format texte, et le format html, en mettant volontairement un accent aigu à l'objet "Un Bonjour de Développez.com !" (puisque mes utilisateurs rentrent des accents dans mon formulaire)

    Code : 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
    <?php
    $destinataire = 'adresse@fai.com';
    // Pour les champs $expediteur / $copie / $destinataire, séparer par une virgule s'il y a plusieurs adresses
    $expediteur = 'adresse@fai.com';
    $copie = 'adresse@fai.com';
    $copie_cachee = 'adresse@fai.com';
    $objet = 'Test'; // Objet du message
    $headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
    $headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
    $headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
    $headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
    $headers .= 'Cc: '.$copie."\n"; // Copie Cc
    $headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
    $message = 'Un Bonjour de Développez.com!';
    if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
    {
        echo 'Votre message a bien été envoyé ';
    }
    else // Non envoyé
    {
        echo "Votre message n'a pas pu être envoyé";
    }
    ?>
    Code : 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
    <?php
    $destinataire = 'adresse@fai.com';
    // Pour les champs $expediteur / $copie / $destinataire, séparer par une virgule s'il y a plusieurs adresses
    $expediteur = 'adresse@fai.com';
    $copie = 'adresse@fai.com';
    $copie_cachee = 'adresse@fai.com';
    $objet = 'Test'; // Objet du message
    $headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
    $headers .= 'Content-type: text/html; charset=ISO-8859-1'."\n"; // l'en-tete Content-type pour le format HTML
    $headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
    $headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
    $headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
    $headers .= 'Cc: '.$copie."\n"; // Copie Cc
    $headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
    $message = '<div style="width: 100%; text-align: center; font-weight: bold">Un Bonjour de Développez.com !</div>';
    if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
    {
        echo 'Votre message a bien été envoyé ';
    }
    else // Non envoyé
    {
        echo "Votre message n'a pas pu être envoyé";
    }
    ?>

    Et si je consulte le mail dans une messagerie free, ou outlook, cela donne :
    Un Bonjour de Développez.com !

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Pour détailler le problème, je précise que mon site est en charset utf-8
    $headers .= 'Content-type: text/html; charset=ISO-8859-1'."\n";
    Je pense que ton problème vient de là.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Même problème pourtant si je mets ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
    		$headers .= 'Content-type: text/html; charset=UTF-8'."\n"; // l'en-tete Content-type pour le format HTML
    		$headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
    		$headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
    		$headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
    		$headers .= 'Cc: '.$copie."\n"; // Copie Cc
    		$headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
    		$message = '<div style="width: 100%; text-align: center; font-weight: bold">Un Bonjour de Développez.com !</div>';

    Si je consulte le mail sur Gmail aucun problème, sur l'appli Mail de Apple aucun problème, mais sur Free ou Outlook toujours le même problème d'accents.....
    Un Bonjour de Développez.com !

Discussions similaires

  1. [Encodage] [Html/CSS] Problème d'accents dans les mails Outlook 2007
    Par Rayek dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/07/2011, 17h03
  2. Accents mal supporté dans les mails envoyés.
    Par laclac dans le forum Langage
    Réponses: 3
    Dernier message: 06/07/2010, 08h56
  3. [2.5] Problème d'accents dans les paramètres
    Par atlain75 dans le forum BIRT
    Réponses: 1
    Dernier message: 07/06/2010, 11h08
  4. accents dans les mails
    Par kaking dans le forum Langage
    Réponses: 6
    Dernier message: 08/01/2010, 11h29
  5. Réponses: 1
    Dernier message: 09/10/2006, 20h00

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