Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-01-2008 09:17:47

Pmithrandir
Membre
Date d'inscription: 14-12-2007
Messages: 12

problème avec la documentation Zend (Anglaise et francaise...)

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 :

Code:

<?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

 

#2 03-01-2008 09:23:18

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: problème avec la documentation Zend (Anglaise et francaise...)

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

 

#3 03-01-2008 10:09:52

Pmithrandir
Membre
Date d'inscription: 14-12-2007
Messages: 12

Re: problème avec la documentation Zend (Anglaise et francaise...)

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 :

Code:

    $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

 

#4 03-01-2008 10:26:36

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: problème avec la documentation Zend (Anglaise et francaise...)

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

 

#5 03-01-2008 10:52:33

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: problème avec la documentation Zend (Anglaise et francaise...)

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

 

#6 03-01-2008 11:07:28

Pmithrandir
Membre
Date d'inscription: 14-12-2007
Messages: 12

Re: problème avec la documentation Zend (Anglaise et francaise...)

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

 

#7 03-01-2008 11:41:44

Pmithrandir
Membre
Date d'inscription: 14-12-2007
Messages: 12

Re: problème avec la documentation Zend (Anglaise et francaise...)

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

Code:

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

 

#8 03-01-2008 12:03:54

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: problème avec la documentation Zend (Anglaise et francaise...)

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages