Это модуль, который я создал очень давно, и он может быть вам полезен:
Он обеспечивает по крайней мере CIDR
класс с арифметикой подсетей. Проверьте контрольные примеры в конце модуля для примеров.
What you probably need is an email/MIME parser. Parsing all the header field is not very hard, but separating out various MIME types like images, attachments, various text and html parts etc. can get very complex.
We use a third party tool but there are many C# tools/libraries out there. Search for free C# email MIME parser in Google. Like I got this one:
http://www.codeproject.com/Articles/11882/Advanced-MIME-Parser-Creator-Editor http://www.lumisoft.ee/lswww/download/downloads/Net/info.txt
Получение приличного парсера MIME, вероятно, будет способ идти. Вы можете попытаться использовать бесплатный парсер MIME (например, этот из CodeProject) Но комментарии от кода автор вроде этого
Я работал над этим примерно так же время, когда я работал на классе обертки Для MSG файлов. Большая разница в Сложность. Где обертка EML класс, может быть, занял день, чтобы прочитать Спец и получить правильно , оболочка MSG класс занял неделю.
заставил меня любопытно относиться к качеству кода. Я уверен, что вы можете взломать мятею парсер, который правильно разрабатывает 95% электронной почты через несколько дней / часов. Я также уверен, что правильно, остальные 5% займут месяцы. Подумайте о обработке S / MIME (зашифрованные и подписанные электронные письма), Unicode, безформированные электронные письма, произведенные по почте по почте и серверам, выпущенные по почте, несколько схемы, связанные с кодировкой, проблемами интернационализации, убедившись, что преднамеренно Mallformed Emails не устраивает ваше приложение и т. Д. ...
Если адрес электронной почты, который вам нужен для разбора, комбинируют из одного источника, быстрый и грязный парсер может быть достаточно. Если вам нужно анализировать электронные письма из дикого лучшего решения.
Я бы порекомендовал наш Rebax Secure Mail Mail , но я уверен, что вы получите достойный результат с компонентами из других продавцов.
Убедившись, что парсер по вашему выбору правильно работает на печально известных «Образец оказания пыток MIME», подготовленный Майком Криспином (соавтором MIME и IMAP RFC). Сообщение тестирования отображается в образце MIME Explorer и может быть в установочном пакете .
Следующий код показывает, как читать и аналог файла EML:
using Rebex.Mail;
MailMessage message = new MailMessage();
message.Load("file.eml");
LumiSoft включает в себя синтаксический анализатор Mime .
Sasa также включает синтаксический анализатор Mime.
Я разместил пример проекта для иллюстрации этого ответа на Github
CDO COM DLL является частью Windows/IIS и может быть использована в .net. Она обеспечит точный разбор и хорошую объектную модель. Используйте ее в сочетании со ссылкой на ADODB.DLL.
public CDO.Message LoadEmlFromFile(String emlFileName)
{
CDO.Message msg = new CDO.MessageClass();
ADODB.Stream stream = new ADODB.StreamClass();
stream.Open(Type.Missing, ADODB.ConnectModeEnum.adModeUnknown, ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, String.Empty, String.Empty);
stream.LoadFromFile(emlFileName);
stream.Flush();
msg.DataSource.OpenObject(stream, "_Stream");
msg.DataSource.Save();
stream.Close();
return msg;
}
-- Добавлено в августе 2017 г: Также ознакомьтесь с MimeKit: https://github.com/jstedfast/MimeKit. Он поддерживает .Netstandard, поэтому будет работать кроссплатформенно.