Lire un email

Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
- - Dernière réponse : waterw72
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
- 9 oct. 2007 à 17:11
Bonjour,

J'aimerais savoir pourquoi lorsque je lis un mail que je me suis envoyé avec une pièce jointe à partir de mon " webmail " maison, les entêtes s'affiche dans le texte du message.
Exemple :


This is a multi-part message in MIME format.

--------------ce714a64db6860eb24e784ed0935744b

Content-Type: text/plain; charset=iso-8859-1

Content-Transfer-Encoding: 8bit


test

--------------ce714a64db6860eb24e784ed0935744b

Content-type: application/octet-stream;

name="README.zip"

Content-Transfer-Encoding: base64

Content-Disposition: attachment;

filename="README.zip"


UEsDBBQAAAAIALWxlzJkEYVFrgAAAPMAAAAKAAAAUkVBRE1FLnR4dGWOMRLCMAwE+8zkD+5okrjn

AdR8w(...)

Lorque je lis ce message à partir de squirrel webmail (par exemple) cela fonctionne correctement et je peux télécharger ma pièce jointe.
Quelqu'un aurais une idée svp?

Merci. (Grégory)
http://www.generationweb.be
Afficher la suite 

2 réponses

Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26
0
Merci
Salut
ton webmail doit mal gerer les entetes... aucune autres explication... faudrait voir la source...

<hr />une recherche sur exaleadhttp://tempuri.org/tempuri.htmlvous aurait peut-etre evite de poser cette question
Commenter la réponse de coucou747
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
0
Merci
Bonjour,

Voici la fonction :
function lireEmail( $id_msg, $num_partie, $partie, $niveau, $alternative= 0 )
        {
            //tableau contenant les informations            static $retour Array('message'> '' );
           
            //si la partie contient des infomrations sru la disposition
            //et que la chaine indique "attachment", alors nous avons
            //affaire à une pièce jointe
            if ( $partie->ifdisposition && strtolower($partie->disposition) == "attachment" )
            {
                echo "
fichier ";
                //on récupère le nom et quelques infos
                //qu'on ajoute au tableau de résultats.
                //on suppose la fonction trouverNom qui parourt
                //le tableau parameters jusqu'à trouver le paramètre
                //name, et en retourner la valeur
                if ($partie->ifdparameters) {                    $fichier array( 'nom'> $this->trouverNom($partie->dparameters),
                                      'numero_partie' => $num_partie,
                                      'encodage' => $partie->encoding,
                                      'taille' => $partie->bytes);
                }
                if ($partie->ifparameters) {                    $fichier array( 'nom'> $this->trouverNom($partie->parameters),
                                      'numero_partie' => $num_partie,
                                      'encodage' => $partie->encoding,
                                      'taille' => $partie->bytes);
                }
                $retour['fichiers'][] = $fichier;
            }
            else
            {
                switch ($partie->type )
                {
                    case TYPETEXT: //    si c'est du texte
                        if ( $alternative) //    et que c'est un texte avec une alternative
                        {
                            if ($this->mail_format == $partie->subtype) //    on fait un test du format à afficher
                            {
                                $texte = imap_fetchbody( $this->flux, $id_msg, $num_partie);
                                $retour['message'] = "".nl2br($this->decoder($texte,$partie->encoding))."";
                            }
                        }
                        else //    si c'est pas alternatif, on affiche
                        {
                            if(  !empty($partie->parts) )
                            {
                                // on lit le texte à la partie qui nous interesse.
                                $texte = imap_fetchbody( $this->flux, $id_msg, $num_partie);
                                $retour['message'] = "".$this->decoder($texte,$partie->encoding)."";
                            }
                            else
                            {
                                if ($partie->subtype == 'PLAIN') // on lit le texte PLAIN
                                {
                                    $texte = imap_body( $this->flux, $id_msg);
                                    $retour['message'] = "".nl2br($this->decoder($texte,$partie->encoding))."";
                                }
                                else if($partie->subtype == 'HTML') // on le texte HTML
                                {
                                    $texte = imap_body( $this->flux, $id_msg);
                                    $retour['message'] = "".$this->decoder($texte,$partie->encoding)."";
                                }
                            }
                        }
                        break;
                       
                    case TYPEMULTIPART:// si c'est pas du texte alors on se rappelle
                        if ($partie->subtype == "ALTERNATIVE")
                        {
                            $alternative = 1;
                        }
                        //on lit chaque sous parts.
                        for ( $i=0;$i<count($partie->parts); $i++)
                        {
                            if ($niveau != 0 )
                            {
                                $pos = strrpos($num_partie, ".");
                                if ($pos === false) { // si on trouve pas de point, on en ajoute un sinon pas : pas de double point
                                    $num_partie = $num_partie.".";
                                }
                            }
                            else {
                                $num_partie = "";
                            }
                            $this->lireEmail($id_msg, $num_partie.($i + 1), $partie->parts[$i], 1, $alternative);
                        }   
                        break;
                    /*case TYPEMESSAGE:
                    case TYPEAPPLICATION:
                    case TYPEAUDIO:
                    case TYPEIMAGE:
                    case TYPEVIDEO:
                    case TYPEMODEL:*/
                    default:
                        if ($partie->ifdparameters) {                            $fichier array( 'nom'> $this->trouverNom($partie->dparameters),
                                              'numero_partie' => $num_partie,
                                              'encodage' => $partie->encoding,
                                              'taille' => $partie->bytes);
                        }       
                        if ($partie->ifparameters) {                            $fichier array( 'nom'> $this->trouverNom($partie->parameters),
                                               'numero_partie' => $num_partie,
                                              'encodage' => $partie->encoding,
                                              'taille' => $partie->bytes);
                        }
                        $retour['fichiers'][] = $fichier;
                        break;
                }
            }           
            return $retour;
        }
       //l'appel à la fonction
       $struct = imap_fetchstructure($this->flux,$id_msg);
       $partie = $struct;
       $email = $this->lireEmail($id_msg, 0, $partie, 0);
Commenter la réponse de waterw72