Problème encodage caractères dans mails envoyés

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Problème encodage caractères dans mails envoyés

Par philou  -  1 reponse  -  Le 04/12/2017 12:57  -  Editer  - 

Bonjour,

Lors de l'envoi de mail par le site la mail arrive avec un problème de caractères accentués: éééé devient ����

J'ai essayé plusieurs chose trouvé sur les forums mais le problème reste.

Script-Nous écrire:

    function nousecrire()  
    {  
        message_bleu("Complétez ce formulaire électronique pour nous écrire");  
        message_noir("Des questions,des problèmes d'inscription ....");  
        ligne_noire();  
        message_rouge("Ce message sera envoyé à ....");  


        if ($_POST['action2'] == Envoyer) {  
            $valid = 1;  
            // ************************* Vérification champ OBJET  
            if ($_POST['OBJET'] == "") {  
                $valid = 0;  
                $mes = "<font color=\"#FF0000\">OBJET: Vous devez entrer un objet !<BR>";  
            }  
            // ************************* Vérification champ  E_MAIL  
            if (! preg_match("/^(.+)@(.+)\\.(.+)$/", $_POST['E_MAIL'])) {  
                $valid = 0;  
                $mes = $mes . "<font color=\"#FF0000\">E MAIL: Vous devez entrer votre email !<BR>";  
            }  
            // *********************** Vérification champ  MESSAGE  
            if ($_POST['MESSAGE'] == "") {  
                $valid = 0;  
                $mes = $mes . "<font color=\"#FF0000\">MESSAGE: Vous devez entrer un message !<BR>";  
            }  
            if ($valid == 0) {  
                echo "<BR>";  
                echo "$mes";  
                echo "<FORM METHOD='POST' ACTION=\"index.php?action=NousEcrire\" NAME='frmNousEcrire'>\n";  
                echo "<input type=\"hidden\" name=\"OBJET\" size=\"80\" value=\"$_POST[OBJET]\"><BR>";  
                echo "<input type=\"hidden\" name=\"E_MAIL\" size=\"80\" value=\"$_POST[E_MAIL]\"><BR>\n";  
                echo "<input type=\"hidden\" name=\"MESSAGE\" value=\"$_POST[MESSAGE]\"><BR>";  
                echo "<input type=\"submit\" name=\"action2\" value=\"Corriger\">\n";  
            }  
            if ($valid == 1) {  
                echo "    <font color=\"#000000\">&nbsp;\n";  

                $mes = "<BR>Le message suivant a été envoyé :<BR><BR>";  
                $mes = $mes . "OBJET:$_POST[OBJET]<BR>";  
                $mes = $mes . "E_MAIL:$_POST[E_MAIL]<BR>";  
                $mes = $mes . "MESSAGE:$_POST[MESSAGE]<BR>";  
                echo "$mes";  
                echo "<FORM METHOD='POST' ACTION=\"index.php\" NAME='frmNousEcrire'>\n";  
                echo "<input type=\"submit\" name=\"submit\" value=\"Retour\">\n";  

                $mes = "Le message suivant a été envoyé par l'";  
                $mes = $mes . "identfiant: *" . $_SESSION['id'] . "*\n";  
                $mes = $mes . "OBJET: $_POST[OBJET]\n";  
                $mes = $mes . "E_MAIL: $_POST[E_MAIL]\n";  
                $mes = $mes . "MESSAGE:$_POST[MESSAGE]\n";  

                envoi_mail("message",$mes ,"" ,"tous" );  
            }  
            exit;  
        }  

        echo "<table cellSpacing=\"0\" cellPadding=\"5\" width=\"578\" border=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\">\n";  
        echo "\n";  
        echo "        <tr><td width=\"20\"><font size=\"1\">&nbsp;</td><td width=\"400\">&nbsp;</td></tr>\n";  
        echo "\n";  
        echo "<TR><TD></TD><TD>";  
        echo "<FORM METHOD='POST' ACTION=\"index.php?action=NousEcrire\" NAME='frmNousEcrire'>\n";  
        echo "OBJET:<BR>";  
        echo "<input name=\"OBJET\" size=\"80\" value=\"$_POST[OBJET]\"><BR>";  
        echo "Votre Adresse mail:<BR>";  
        echo "<input name=\"E_MAIL\" size=\"80\" value=\"$_POST[E_MAIL]\"><BR>\n";  
        echo "Message:<BR>";  
        echo "<textarea rows=\"13\" name=\"MESSAGE\" value=\"$_POST[MESSAGE]\" cols=\"62\">$_POST[MESSAGE]</textarea><BR>";  
        echo "<input type=\"submit\" name=\"action2\" value=\"Envoyer\">\n";  
        echo "<input type=\"reset\" name=\"Reset\" value=\"Effacer\">\n";  
        echo "</FORM>";  
        echo "</TD></TR>";  
        echo "</TABLE>\n";  
        echo "          </td>\n";  
        echo "        </tr>\n";  
        echo "    </table>\n";  
        echo "    </div>\n";  
        echo "    <p>&nbsp;</td>\n";  
        echo "  </tr>\n";  
        echo "</table>\n";  
        exit;  

Script-envoi mail:

    function envoi_mail ($objet, $texte, $dest, $cc)  
       {  
            global $host, $mail_avertir1, $mail_avertir2, $debug;  
            if ($debug) {  
                $objet = "[Mode DEBUG] " . $objet;  
                $dest = "";  
                $cc = "";  
                $mail_avertir1 = "";  
                $mail_avertir2 = "";  
                //$texte = utf8_encode($texte);  
            }  
                $objet = "[XXXXXX 2020!] " . $objet;  

            if ($host == "www........fr") {   
                require("class.phpmailer.php");  

                $mail = new PHPMailer();  
                $mail->CharSet = 'UTF-8';  
                $mail->From = "xxx@xxxxx.fr";  
                $mail->FromName = "XXXXXX";  

                $mail->AddAddress("yyyy@yyyyy.fr");  
                if ($dest != "") {  
                    $mail->AddAddress($dest);  
                }  
                if ($cc == "tous") {  
                    if ($mail_avertir1 != "") {  
                        $mail->AddAddress($mail_avertir1);  
                    }  
                    if ($mail_avertir2 != "") {  
                        $mail->AddAddress($mail_avertir2);  
                    }  
                }  

                $mail->AddReplyTo("zzz@zzz.fr");  
                $mail->Subject = $objet;  
                $mail->Body = $texte;  


                if (! $mail->Send()) {  
                    // header('Content-Type: text/html');  
                    // printf("<html><body>");  
                    // printf("ERREUR : Message non envoyé !</p>");  
                    // printf("ERREUR SMTP : " . $mail->ErrorInfo );  
                    // printf("</body></html>");  
                } else {  
                    // header('Content-Type: text/html');  
                    // printf("<html><body>");  
                    // printf("SUCCES : Message envoyé !</p>");  
                    // printf("</body></html>");  
                }  
                return;  
            }  

lorsque je teste en appelant le script suivant, pas de problème:

mail-test.php

    <?php  

       // On va chercher la dénition de la classe  
       require('class.phpmailer.php');  

       // On créune nouvelle instance de la classe  
       $mail = new PHPMailer();  
       $mail->CharSet = 'UTF-8';  
       // De qui vient le message, e-mail puis nom  
       $mail->From = "elus@cgt.fr";  
       $mail->FromName = "Les Elus CAPN";  

       // Dénition du sujet/objet  
       $mail->Subject = "[MUTATIONS 2020!] Confirmation de mail";  

       // On lit le contenu d'une page html  
       $mail->Body = "Bonjour,  
    éééééé àààààà  
    Salutations ";   
        // Il reste encore àjouter au moins un destinataire  
       $mail->AddAddress("xxx@xxx.fr");  
        // Pour finir, on envoi l'e-mail  
       $mail->send();  

       echo "Mail parti";  

    ?>  

Voilà l'état des lieux, vous remerciant pour votre aide
Bien cordialement

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 05/12/2017 22:55  -  Haut de page  - 

C'est un problème d'encodage. Là, on a des caractères avec un encodage iso-8859-1 affiché dans une page encodée en utf-8

Il faut utiliser la fonction utf8_encode() pour convertir les caractères en iso-8859-1 en utf8 avant affichage. Voir la documentation

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !