Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour
Je suis toujours dans mes problèmes de lecture de mail et ca avance pas trop.
Bref, aujourd hui j'ai trouvé je pense une erreur dans la doc zend, dans les explication sur la recuperation de message on peut lire :
<?php // affiche la première partie de type text/plain= $foundPart = null; foreach (RecursiveIteratorIterator($mail->getMessage(1)) as $part) { try { if (strtok($part->contentType, ';') == 'text/plain') { $foundPart = $part; break; } } catch (Zend_Mail_Exception $e) { // ignore } } if (!$foundPart) { echo 'Aucune partie "plain text" trouvés'; } else { echo "Partie \"plain text\" : \n" . $foundPart; }
RecursiveIteratorIterator pose deux problèmes :
- RecursiveIterator me semble plus indiqué... ca ressemble plus a ce qui est dans l'API
- Ca me retourne une erreur PHP dans les deux cas
Fatal error: Call to undefined function RecursiveIterator() in C:\xampp\htdocs\BLUE_MEDI_V6_5\administration\admin\Module_ACCUEIL\ACU_getContent.php on line 86
Est ce moi qui ai la berlu ou est ce q'il y a vraiment un problème de ce coté là ?
Pierre
Hors ligne
RecursiveIteratorIterator est une classe, pas une fonction...
soit tu met un new devant, soit tu essais de faire un cast.
Vue la syntaxe, je pencherai plutot pour la 1er solution.
Hors ligne
A priori, j'avais essayé le new, mais il n'en voulait pas(classe non implementable)
Au final, j'ai carrement enlever un morceau en partant de l'affirmation que Mail_part implémentait RecursiveIterator (et donc qu'il le connaissait implicitement).
Au final ca donne :
$foundPart = null; foreach ($message as $part) { try { if (strtok($part->contentType, ';') == 'text/html') { $foundPart = $part; break; } } catch (Zend_Mail_Exception $e) { // ignore } } if (!$foundPart) { foreach ($message as $part) { try { if (strtok($part->contentType, ';') == 'text/plain') { $foundPart = $part; break; } } catch (Zend_Mail_Exception $e) { // ignore } } if (!$foundPart) { echo "Message trop complexe, prévisualisation impossible, vous pouvez utiliser votre gestionnaire mail pour lire ce message."; } } else { echo $foundPart.getContent(); }
Je lui demande de selectionner la premiere partie HTML, puis, si il ne trouve rien la première partie Texte.
Ca marche, mais bon, c'est quand même pas probant... il n'explore pas toutes les parties de mon message.
Dans le cas ou j'ai un message envoyé avec Thunderbird en text + html et qui contient une pièce jointe, il ne me trouve ni HTML, ni texte
Pierre
Hors ligne
tu as testé un truc dans le genre de RecursiveIteratorIterator sous google par hasard? Y'a l'air d'avoir pas mal de résultats qui t'auraient vite aidé...
Hors ligne
Il n'explore pas toute les parties car sans un recursiveiteratoriterator, tu n'iteres que sur le premier niveau.
Il n'y a pas de soucis particulier avec cette classe...
Regarde bien la doc,
http://www.php.net/~helly/php/ext/spl/c … rator.html
Et comme dit MoOx, tu peux aiséments trouver des exemples sur google.
De mémoire, si tu télécharges les sources de php, la spl se trouve dans ext. A l'intérieur, tu as les sources de la SPL et aussi des exemples d'utilisation.
Hors ligne
j'ai jamais entendu parlé de SPL nul part et je regarde les liens...
après je ne vois pas du tout comment l'utiliser...
A priori elle est "enabled" sur mon serveur, donc je pense que je devrais pouvoir y accéder comme aux autres fonctions, mais il ne semble pas la trouver...
Hors ligne
bon, me revoila, a priori, j ai réussi... non sans mal.
Ca parait bête, mais il suffit d'un mot quand on ne connaît pas la syntaxe a utiliser pour tout bloquer.
et voila la correction, donnée plus haut mais que je n'avais pas réussi à faire marché(j ai gagné le droit de lire quelques tutos sur la SPL comme ça...)
foreach (new RecursiveIteratorIterator($message) as $part) { try { if (strtok($part->contentType, ';') == 'text/html') { $foundPart = $part; break; } } catch (Zend_Mail_Exception $e) { // ignore } }
la ça me parait plus correct et ca doit explorer toutes les partie du mail.
Hors ligne
la SPL est la "Standard PHP Lib". Un must known si je puis dire....
Vraiment utile, pas forcement facile à appréhender, mais redoutablement efficace.
Vraiment, ca vaux le coup de passer un peu de temps dessus. Ce sont des concepts qui dépasse largement php et que tu retrouveras dans de nombreux langages objet.
Tu peux trouver une bonne base de début à la fin de la page d'acceuil en paragraphe 9 et 10.
http://www.php.net/~helly/php/ext/spl/main.html
Dernière modification par TiTerm (03-01-2008 12:18:15)
Hors ligne
Pages: 1