francoisch Posté 1 Décembre 2010 Posté 1 Décembre 2010 Bonjour Jai construit un petit Client de messagerie, en reprenant du code sur le Web, qui se contente de lire les mails depuis un serveur de messagerie et de les afficher à la queue leu leu dans une page Web. Des exemples de ce que jutilise : $header = imap_fetchheader($mail_cnx, $i, FT_PREFETCHTEXT);$body = imap_body($mail_cnx, $i, FT_PEEK);$s=imap_fetchstructure($link,$msgid); $text=imap_body($link,$msgid); avec le code qui va bien autour de ça. Mon problème : il arrive assez souvent quun mail, peut-être avec une structure curieuse ou comportant des caractères spéciaux, sème un gros désordre dans mon affichage de page Web. Ces mails trouble-fête sont pratiquement toujours des publicités, souvent envoyées par le prestataire de messagerie, avec des images un peu partout. Une fois un message comme ça supprimé, les autres messages saffichent bien dans la page Web. Comme je crois que les mails peuvent avoir différents formats, faudrait-il, par exemple, que je leur donne un format Html, puisque je les affiche dans une page Web ? Si Oui, comment faire ? Sinon, à votre avis, que faire pour corriger ce problème très désagréable ? Par avance merci de votre aide. Francois
SStephane Posté 1 Décembre 2010 Posté 1 Décembre 2010 Hello, Ne récupérer que les textes, les sauts de ligne, les images et les liens en raisonnant par l'absurde me paraît être la meilleure manière de procéder. De toutes les manières, si seul le contenu t'intéresse, le reste ne sert à rien. Ce sera de toutes manières difficile de parser du html imparfait en PHP à moins de ne coder toi-même la bibliothèque, donc autant faire comme ça. (Il existe une bibliothèque Java qui fonctionne bien sinon) Ainsi, tu n'auras aucun souci d'affichage sur ta page web. (J'ecris petit pour pas me faire cogner : sinon, tu affiches les mails dans des iframes)
francoisch Posté 2 Décembre 2010 Auteur Posté 2 Décembre 2010 Merci de ta réponse. Oui, seul le contenu m'intéresse; à l'inverse, je n'ai rien à faire, par exemple, d'une éventuelle mise en page. Par contre, en laissant comme ça, si j'ai bien compris le sens de ta réponse, ça veut dire que j'aurai toujours des messages qui vont semer à l'occasion le bazar dans ma page Web. C'est probablement ce que je vais faire (rien) en dépit de l'inconvénient. Francois
SStephane Posté 2 Décembre 2010 Posté 2 Décembre 2010 Tu peux aussi tout simplement faire un striptags en ne conservant que <p>, <img>, <br> et <a> et en virant tout le reste (en ne prenant que le contenu entre les balises body bien sur). Ca devrait résoudre ton problème, c'est ça que je voulais dire. (tu peux également supprimer tous les attributs desdites balises)
Occi Posté 2 Décembre 2010 Posté 2 Décembre 2010 C'est parce qu'il doit y avoir des balises non fermées ou des mauvaises imbrications. Pour conserver le mail d'origine tu peux l'ouvrir en iframe ou une iframe injectée dans le DOM en javascript. Tu peux aussi utiliser un purificateur d'HTML comme l'extension de PHP "Tidy" qui va remettre en ordre les balises non fermées en respectant le standart HTML que tu auras définis. Occi
francoisch Posté 3 Décembre 2010 Auteur Posté 3 Décembre 2010 (modifié) Bonjour et merci de vos répnses qui m'ouvrent des horizons. Je vais travailler là dessus. Francois Modifié 5 Décembre 2010 par Patrick
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant