francoisch Posté 5 Août 2010 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
jcaron Posté 5 Août 2010 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.
francoisch Posté 6 Août 2010 Auteur 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
francoisch Posté 9 Août 2010 Auteur 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
francoisch Posté 1 Janvier 2011 Auteur 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant