Чтение файлов EML из службы Windows SMTP. Есть ли причина не использовать StreamReader? - PullRequest
3 голосов
/ 27 февраля 2010

Я собираюсь читать и анализировать файлы EML, отброшенные службой Microsoft SMTP. Я новичок в использовании различных потоковых классов. Реализация, которую я видел, которая разбирает эти файлы, использует вариант System.IO.Stream для чтения побайтно. Тем не менее, кажется, что эти файлы никогда не должны быть ничего, кроме текста. Не лучше ли использовать StreamReader? И если да, есть ли причина использовать что-то кроме кодировки по умолчанию (UTF-8)?

1 Ответ

1 голос
/ 01 марта 2010

Они должны быть текстовыми, но не всегда.

Письма могут быть 8-битными или двоичными.

StreamReader будет работать примерно с 99% писем, которые вы хотите проанализировать.

Однако, честно говоря, это не самая большая проблема.

Проблема будет в том, что на самом деле выполняется синтаксический анализ и извлечение содержимого Mime в соответствии с правилами Mime, а также использование правильного набора символов.

Хотя UTF-8 - очень большой набор символов, и его можно использовать для анализа большинства электронных писем, вы все равно можете получить поврежденный контент, пытаясь проанализировать электронные письма с этим набором символов.

Лучший способ сделать это - фактически прочитать электронное письмо в двоичной форме, извлечь набор символов, а затем переключиться на чтение электронного письма, используя указанный набор символов, найденный в заголовках.

...