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 :

php mail problèmes d'accents sur certains domaines


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut php mail problèmes d'accents sur certains domaines
    Bonjour,
    J'ai créé une appli de gestion sur le web avec une fonction mail automatique lors de l'inscription et diverses autres manipulations.
    Tout fonctionne bien à l'exception de la fonction mail qui me donne des problèmes sur certain domaine mail.

    l'ensemble de l'appli est en utf-8 y compris les tables en VARCHAR. Du coup après des heures de recherche et de tests qui ne mènent à rien j'ai décidé de poster ce message.
    Sur les différents webmail tout fonctionne le problème est sous Outlook 2013! Etonnant non?

    voici le code d'envois du message:

    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
    function sendMailNewMbr($message_html, $mail, $sujet, $expediteur, $webmasterEmail)
    {
        if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
        {
            $passage_ligne = "\r\n";
        }
        else
        {
            $passage_ligne = "\n";
        }
     
        //===== Création de la boundary.
        $boundary = "-----=".md5(uniqid(rand()));
        //==========
     
        //=====Création du header de l'e-mail.
        $header = "From: \"NOUS\"<Club@club.com>".$passage_ligne;
        $header.= "Reply-to: \"".$expediteur."\" <".$webmasterEmail.">".$passage_ligne;
        $header.= "MIME-Version: 1.0".$passage_ligne;
        $header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
        //==========
     
        //=====Création du message.
        $message = $passage_ligne."--".$boundary.$passage_ligne;
     
        //=====Ajout du message au format HTML
        $message.= "Content-Type: text/html; charset=\"charset=UTF-8\"".$passage_ligne;
        $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
        $message.= $passage_ligne.$message_html.$passage_ligne;
     
        //==========
        $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
        //$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
        //==========
     
        //===== Contrôle si on doit convertir le sujet =====
        if(!mb_detect_encoding($sujet, 'UTF-8', true))
        {
            $sujet = utf8_encode($sujet); // Converti un texte ISO-8859-1 en UTF-8
        }
     
        //=====Envoi de l'e-mail.    
        mail($mail, $sujet, $message, $header);
    }
    Merci pour vos réponses

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 003
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 003
    Par défaut
    Le problème vient probablement de là: charset=\"charset=UTF-8\". (ligne 27)

    charset=\"UTF-8\" devrait suffire.

    Au passage, à la ligne 3: if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)), il faut échapper le point qui est en dehors de la classe de caractère pour obtenir un caractère littéral (vu que le point est un caractère spécial signifiant n'importe quel caractère à l'exception de \n). Le groupe capturant (...) est inutile et consomme de la mémoire pour rien, autant le remplacer par un groupe non-capturant (?:...), soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!preg_match("#^[a-z0-9._-]+@(?:hotmail|live|msn)\.[a-z]{2,4}$#", $mail))
    Aussi, la création de ton header (et du message) serait bien moins fastidieuse si tu plaçais ta chaîne entre simple quotes (ça t'éviterait d'avoir à échapper tous les doubles quotes de la chaîne.):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $header = 'From: "NOUS"<Club@club.com>' . $passage_ligne
            . 'Reply-to: "' . $expediteur . '" <' . $webmasterEmail . '>' . $passage_ligne
            . 'MIME-Version: 1.0' . $passage_ligne
            . 'Content-Type: multipart/alternative;' . $passage_ligne
            . ' boundary="' . $boundary . '"' . $passage_ligne;

  3. #3
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Par défaut
    Là c'est la honte... je ne l'avais pas vu celui-là...
    Merci ça fonctionne cette fois-ci.

    Au passage, j'ai un soucis d'accents sur les noms de l'expéditeur, tu penses que ça peut venir de là aussi?

    Dans tous les cas merci beaucoup, mon problème est résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/06/2009, 15h09
  2. [SQL-Server] Problème d'accents sur requête SQL, de php à SQLServer
    Par pontos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/04/2007, 15h58
  3. Problème d'accent sur le 'e'
    Par edwin25 dans le forum Mise en forme
    Réponses: 3
    Dernier message: 09/10/2006, 17h09
  4. Problème d'accent sur un serveur UNIX
    Par geji dans le forum Langage
    Réponses: 6
    Dernier message: 20/04/2006, 08h50
  5. [DOM] Problème d'accent sur les noms de fichier avec mon parseur
    Par ujoodha dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/04/2006, 22h55

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