2013-09-26 1 views
3

Est-ce que quelqu'un connaît une bonne bibliothèque d'analyseurs d'email? La recherche sur Google n'a pas beaucoup aidé.Email text/mime parser

J'ai des emails déposés localement au format maildir (un mail par fichier). J'ai besoin d'analyser le fichier d'extraction de corps et de pièces et de l'enregistrer dans une base de données.

S'il n'y a pas une telle chose, je pourrais essayer d'écrire quelque chose moi-même apprendre en chemin. Tout conseil sur la façon de commencer serait apprécié. Ai-je besoin d'apprendre le parsec ou est-ce facile de s'en passer?

+0

Il semble y avoir un projet d'abandon sur le hackage: http://hackage.haskell.org/package/HackMail, peut-être que vous pourriez utiliser cela comme point de départ. (http://hackage.haskell.org/packages/archive/HackMail/0.0.1/doc/html/src/HackMail-Data-ParseEmail.html#parseEmailFromFile) – Jonke

Répondre

1

Vous pourriez le faire en utilisant, disons, des expressions régulières. Cependant, apprendre à écrire un analyseur en utilisant parsec (ou attoparsec) en vaut la chandelle, et cela semble être un bon exemple pour commencer. La prochaine fois que vous aurez besoin d'analyser quelque chose, vous serez heureux de l'avoir fait. Les analyseurs que vous écrivez pour parsec fonctionneront avec attoparsec, et vice versa, si je me souviens bien, peu importe ce que vous choisissez. Il peut être un peu plus facile de commencer avec parsec, car il signale automatiquement l'emplacement d'une erreur.

J'ai appris Parsec à partir du documentation. Ne pas être initié par la longueur de la documentation; vous n'aurez probablement pas besoin de lire la page 12 pour cette tâche.

+0

Levez-vous, parsec est une chose cool, mais à la au début il semble effrayant, mais si vous l'avez appris, vous obtiendrez un outil plus puissant que les expressions régulières –

+0

@mhwombat: le lien de la documentation ne fonctionne pas pour moi. Mais cela fonctionne: http://legacy.cs.uu.nl/daan/parsec.html. Je vous suggère également de lire le chapitre 16 de Real World Haskell. Voici le lien pour la version en ligne: http://book.realworldhaskell.org/read/using-parsec.html –