Aller au contenu

Sujets conseillés

Posté

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

Posté

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.

Posté

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

Posté

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

  • 4 months later...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...