Aller au contenu

Affichage de mail


Sujets conseillés

Posté

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

Posté

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)

Posté

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

Posté

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)

Posté

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

Veuillez vous connecter pour commenter

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



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