francoisch Posté 5 Août 2010 Partager Posté 5 Août 2010 Bonjour Jai construit un petit client de messagerie avec du code trouvé sur le Web ; un extrait : $body = imap_body($mail_cnx, $i, FT_PEEK);$mimeParams['input'] = $header.$body;$message = Mail_mimeDecode::decode($mimeParams); Quand il ny a pas de pièce jointe : $body = trim($message->body); Quand il y a une pièce jointe : $body = trim($message->parts[0]->body); Mon problème : avec une pièce jointe, la variable $body est vide. A votre avis ? Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 5 Août 2010 Partager Posté 5 Août 2010 Je ne connais pas le détail du fonctionnement du module en question (et j'ai la flemme d'aller regarder à cette heure avancée), mais ça me paraît simpliste de travailler comme ça. Un mail peut avoir une structure plus ou moins complexe avec un ou plusieurs niveaux en multipart/alternative, multipart/related, etc, donc se dire que le body est forcément dans $message->body ou $message->parts[0]->body c'est un peu comme dire que le texte d'une page HTML est forcément dans le premier DIV... Il doit y avoir des méthodes pour parcourir l'arbre constitué par le message décodé et trouver ce qui t'intéresse réellement... Jacques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 6 Août 2010 Auteur Partager Posté 6 Août 2010 Jacques, merci de ta réponse. Oui, j'aimerai connaître la méthode qui permette de parcourir un mail. Dans une autre fonction, j'envoie un mail avec une pièce jointe, le texte en premier, la pièce jointe en second, les deux étant précédés d'une Boundary. Je procédais par analogie pour rechercher le texte dans un mail multipart, le texte en premier mais ça ne marche pas. Je vais continuer mes recherches. Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 9 Août 2010 Auteur Partager Posté 9 Août 2010 Bonjour Je crois comprendre maintenant que mon problème vient simplement que mimeDecode ne décode rien, du moins comme je lutilise. Voici lessentiel de mon code : require_once("Mail/mimeDecode.php");$mimeParams = array();$mimeParams['decode_headers'] = true;$mimeParams['include_bodies'] = true;$mimeParams['decode_bodies'] = true;$params['input'] = $input;$mimeParams['crlf'] = "\r\n"; $header = imap_fetchheader($mail_cnx, $i, FT_PREFETCHTEXT);$body = imap_body($mail_cnx, $i, FT_PEEK);$mimeParams['input'] = $header.$body;$message = Mail_mimeDecode::decode($mimeParams); echo "***** message: ".$message."<br>"; La variable $message contient uniquement ceci : Object. A linverse, jai bien le texte des messages sans pièce jointe puisque je nai pas besoin de mimeDecode. Merci par avance de votre aide. Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 1 Janvier 2011 Auteur Partager Posté 1 Janvier 2011 Je me suis aperçu que Body d'un mail multipart/mixed ne se trouve pas comme pour un mail multipart/alternative. Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant