Je vais lire et analyser les fichiers EML supprimés par le service Microsoft SMTP. Je suis un débutant à l'utilisation des différentes classes de cours d'eau. L'implémentation que j'ai vu analyser ces fichiers utilise une variation sur System.IO.Stream pour lire octet par octet. Cependant, il semble que ces fichiers ne devraient jamais être autre chose que du texte. Ne serait-il pas préférable d'utiliser un StreamReader? Et si oui, y a-t-il une raison d'utiliser autre chose que l'encodage par défaut (UTF-8)?Lecture de fichiers EML à partir du service Windows SMTP. Une raison de ne pas utiliser StreamReader?
Répondre
Ils devraient être du texte, mais ils ne le sont pas toujours.
Les e-mails peuvent être codés sur 8 bits ou binaires. Un StreamReader fonctionnera pour environ 99% des courriels que vous voulez analyser.
Cependant, très honnêtement, ce n'est pas le plus gros problème.
Le problème consistera à analyser et à extraire le contenu MIME, conformément aux règles du MIME, tout en utilisant le jeu de caractères correct. Bien que UTF-8 soit un très grand jeu de caractères, et qu'il puisse être utilisé pour analyser la majorité des courriels, vous pouvez toujours obtenir du contenu corrompu en essayant d'analyser les courriels avec ce jeu de caractères. Le meilleur moyen de le faire est de lire l'email sous forme binaire, d'extraire le jeu de caractères, puis de passer à la lecture de l'email en utilisant le jeu de caractères spécifié dans les en-têtes.
Merci pour la réponse. Je vois le paramètre charset de l'en-tête "Content-Type" dans la RFC 2046 sec. 4.1.2. Est-ce la bonne information? –
Oui. Une chose que vous pouvez faire, est de scanner en avance sur cette valeur, de la trouver, de définir l'encodage, puis de relire l'e-mail avec un StreamReader créé avec ce jeu de caractères. –
Cela ressemble à un plan. Merci encore. –