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

Bibliothèques et frameworks PHP Discussion :

Encodage du contenu du mail avec IMAP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti Avatar de cyreel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 388
    Points : 324
    Points
    324
    Par défaut Encodage du contenu du mail avec IMAP
    Bonjour à tous,
    J'utilise IMAP pour récupérer le contenu d'une boite de réception sur un serveur exchange.
    Le problème qui se pose à moi c'est au niveau de l'encodage du contenu du mail car lorsque je l'affiche les caractère accentué ne s'affichent pas bien.

    J'ai besoin d'aide afin de savoir comment encoder les caractères.
    Pour le sujet du mail il est bien encodé quand j'utilise utf8_encode() mais le corp du message non!

    Help please!

  2. #2
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    bonjour la mélasse en effet

    surtout que nativement, php dispose de quantité de manière de convertir des jeux de caractères.

    une fois que tu as traversé récursivement la structure avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $structure = imap_fetchstructure($stream, $uid, FT_UID);
    si tu arrives au $part_number qui t'interesse (ici un part_number dont le mime_type est du text/plain ou text/html)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $text = imap_fetchbody($stream, $uid, $part_number, FT_UID);
    1. on faire un 1er passage selon le encoding (à ne pas confondre avec charset)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if($structure->encoding == 3) {   		   
        $text = base64_decode($text);
    } else if($structure->encoding == 4) {
        $text = quoted_printable_decode($text);
    }
    2. ensuite on convertit en UTF8 (perso je préfère à l'iso, mais ca dépend du projet bien sur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // idealement il faudrait faire une boucle pour chercher plutot que prendre le 1er item mais bon, ca a marché pour l'instant
    if (isset($structure->parameters[0]) && $structure->parameters[0]->attribute == 'charset') {
           $charset = $structure->parameters[0]->value;
           $text = mb_convert_encoding($text, "UTF-8", $charset );
    } else {
           $text = utf8_encode($text); // si par malheur y'a pas de charset dans le mime (jms vu perso...)
    }
    // $text contient enfin ce qui t'interesse

Discussions similaires

  1. [2013] Recupérer le contenu du mail outlook avec Microsoft Visual studio 2013,c#
    Par Elmessk dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 12/06/2015, 10h36
  2. Réponses: 7
    Dernier message: 07/05/2014, 17h05
  3. Erreur d'encodage de mail avec javax
    Par tus01 dans le forum Général Java
    Réponses: 13
    Dernier message: 17/03/2009, 16h07
  4. Supprimer un mail avec php IMAP
    Par diabli73 dans le forum Langage
    Réponses: 1
    Dernier message: 11/02/2009, 10h46
  5. Réponses: 2
    Dernier message: 09/05/2006, 13h55

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