11
votes

Échange de courriels transférés

J'écris du code pour Parse Strong> Emails transférés. Ce que je ne suis pas sûr, c'est peut-être une bibliothèque Python, certaines RFC, je pouvais coller ou une autre ressource qui me permettrait d'automatiser la tâche.

Pour être précis, je ne sais pas si la "mise en page" des courriels transfrontés est couvert par une norme ou une recommandation, ou s'il vient d'évoluer au fil des ans, la plupart des clients de messagerie produisent actuellement la même sortie pour la partie texte: P>

    Begin forwarded message: 

    > From: Me <me@me.me>
    > Date: January 30, 2010 18:26:33 PM GMT+02:00
    > To: Other Me <other-me@me.me>
    > Subject: Unwise question


1 commentaires

J'utilise GitHub.com/zapier/email-Reply-Parser et ça fonctionne


4 Réponses :


1
votes

standard pour une réponse / avance est> Préparez chaque ligne Le nombre de fois que le courrier est imbriqué, y compris celui qui a envoyé le courrier électronique initial est à la hauteur du client. Donc, ce que vous devez faire à Python est simplement ajouter> au début de chaque ligne.

string = string.replace("\n","\n>")


4 commentaires

Merci, mais il semble que je n'ai pas sorti le mot: analyser dans ma question :) c'est réparé maintenant.


Ahh, bien cela change totalement la question. :) La réponse est toujours cependant, il n'y a pas de norme, il est entièrement à la hauteur du client.


Regardez dans le monde réel et voyez s'il existe d'autres programmes qui rendent les bonnes inférences malgré le manque de norme. Par exemple, si vous vous abonnez à Tripit.com et transmettez votre itinéraire de la compagnie aérienne à des plans@tripit.com, votre compte affichera les détails de votre voyage corrects. Tripit.com, au moins, peut faire la bonne chose. Comment la puissance peut-elle approximatiser ce comportement?


Tripit.com Je suppose que beaucoup de sueur et de graisse de coude. Il y a quelques centaines de fournisseurs de voyages, parfois quelques dizaines de programmes de messagerie. Si vous avez les gens, écrivez ensuite les analyseurs pour chacun. Assurez-vous qu'il s'agit d'un analyseur strict et lorsque quelque chose entre quelque chose n'est pas formaté à droite, écrivez un nouvel analyseur pour gérer ce changement. Il y a probablement 6 mois ou plus de travail à suivre.



2
votes

Dans mon expérience, à peu près toujours le client de messagerie en avant / répond différemment. Généralement, vous aurez une version texte simple et une version codée HTML dans le MIME au bas du courrier. Les en-têtes de messagerie ont un RFC ( http://www.faqs.org/rfcs/rfc2822.html "2822" ), mais malheureusement, le contenu du corps du message est sorti de la portée.

Non seulement vous devez contenir avec la variance du client de messagerie, mais la variance des préférences de l'utilisateur. À titre d'exemple: Lotus Notes met les réponses au sommet et aux réponses Thunderbird en bas. Ainsi, lorsqu'un utilisateur Thunderbird répond à une réponse de l'utilisateur de Lotus Notes, ils pourraient insérer leur réponse en haut et laisser leur signature en bas.

Un autre piège peut-être soulever avec Word Eppostic des chaînes de réponse.

>>>> La réponse extérieure qui passe sur la limite et que le mot est envoyé par
Le client de messagerie de la réplique moyenne \ n
>> Le corps du message d'une réponse moyenne
> Réponse précédente
Réponse la plus récente

Je n'utiliserais pas le message et je le laissais à l'utilisateur pour analyser dans leurs têtes. Ou, je voudrais emprunter le code d'un autre projet.


2 commentaires

Merci. Heureusement, je peux mettre des contraintes sur les courriels transférés entrants. Quoi qu'il en soit, il est dommage qu'il n'y ait pas de «meilleur code pratiques» pour cela.


Le RFC pour les en-têtes de courrier est maintenant RFC 5322.



2
votes

Comme les autres réponses indiquent déjà: il n'y a pas de norme, et votre programme ne sera pas irréfléchi.

Vous pouvez consulter les en-têtes, en particulier l'en-tête utilisateur utilisateur , pour voir quel type de client a été utilisé et code spécifiquement pour les clients les plus courants.

Pour savoir quels clients vous devez prendre en compte, consultez Cette étude de popularité . Diverses perspectives, Yahoo !, Hotmail, Mail.app, iPhone Mail, Gmail et Lotus Notes classent hautement. Environ 11% du courrier est classé comme "indéectable", mais en utilisant des en-têtes de l'e-mail transféré, vous pourriez être capable de faire mieux que cela. Notez que les statistiques ont été rassemblées en plaçant une image à l'intérieur de l'e-mail. Les résultats peuvent donc être asymétriques.

Un autre problème est le courrier HTML, qui peut ou non inclure une version de texte brut. Je ne suis pas sûr du comportement habituel des clients à cet égard.


2 commentaires

Comme je l'ai écrit dans l'autre commentaire, je peux mettre des contraintes sur les utilisateurs de mon script (par exemple, les utiliser qu'un seul client de messagerie pris en charge), mais la partie HTML peut toujours être délicate car les courriels entrants d'origine peuvent contenir à peu près n'importe quoi. .


Si le client enveloppe l'original dans un

ou quelque chose, quand il le transmet, alors html pourrait réellement être la partie facile.



5
votes

Contrairement à ce que de nombreuses autres personnes ont dit, là est une norme sur les emails transférés, RFC 2046 ," Extensions de messagerie Internet polyvalente (MIME) Partie Two: Types de média ", plus de dix ans. Voir spécialement sa section 5.2, «Type de média de message».

L'idée de base derrière la RFC 2046 consiste à encapsuler un message dans la partie MIME d'un autre, de type nommé (malheureusement) message / rfc822 (n'oubliez jamais que MIME est récursif). MIME Bibliothèque de Python peut le gérer correctement.

Je n'ai pas répondu aux autres réponses car ils ont raison à un respect: la norme n'est pas suivie par chaque courrier. Par exemple, le MutT Mailer peut transférer un message au format RFC 2046, mais également dans un format ADHOC. Donc, dans la pratique, un mailer ne peut probablement pas gérer que RFC 2046, il doit également analyser les différentes autres et les syntaxes sous-spécifiées.


0 commentaires