Lire un email

Signaler
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
-
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
-
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

2 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
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
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008

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);