Существуют ли методы .NET Framework для анализа электронной почты (MIME)?
Существует ли класс или набор функций, встроенных в .NET Framework (3.5+), для анализа необработанных электронных писем (документы MIME)?
Я не ищу ничего необычного или отдельной библиотеки, он должен быть встроен. Я буду использовать это в некоторых модульных тестах и вам нужно только захватить основные заголовки интереса (To, From, Subject) вместе с телом (который в этом случае всегда будет текстовым и, следовательно, не имеет MIME-деревьев или границ). Я написал несколько парсеров MIME в прошлом, и если нет ничего доступного, я просто собираю что-то из регулярных выражений. Было бы здорово сделать что-то вроде:
MailMessage msg = MailMessage.Parse(text);
Мысли?
Ответы
Ответ 1
Я знаю, что вы не сказали никаких внешних библиотек, но у меня есть библиотека, размещенная на codeplex:
https://bitbucket.org/otac0n/mailutilities
MimeMessage msg = new MimeMessage(/* string, stream, or Byte[] */);
Он был протестирован с более чем 40 000 сообщений в реальном мире.
Я не очень доволен своим выбором пространства имен, но... Мне слишком лениво изменить его.
PS:
Внутри моя библиотека использует эти регулярные выражения как синтаксический анализатор:
internal static string FullMessageMatch =
@"\A(?<header>(?:[^\r\n]+\r\n)*)(?<header_term>\r\n)(?<body>.*)\z";
internal static string HeadersMatch =
@"^(?<header_key>[-A-Za-z0-9]+)(?<seperator>:[ \t]*)(?<header_value>([^\r\n]|\r\n[ \t]+)*)(?<terminator>\r\n)";
internal static string HeaderSeperator =
"\r\n";
internal static string KeyValueSeparator =
@"\A:[ \t]*\z";
Ответ 2
Очень впечатлен бесплатным, открытым исходным кодом (MIT-лицензированным) и быстрым MimeKit
Ответ 3
Нет, пока этого не сделать. Microsoft не создала конвертер Text-to-Message, так как они не создали библиотеку POP3 или IMAP. Несчастная.
Ответ 4
Я рекомендую библиотеки парсеров IMAP и MIME от Lumisoft. Который я использовал раньше и с ним легко работать.
Вы можете скачать его здесь: http://www.lumisoft.ee/lsWWW/Download/Downloads/Net/
В lib есть много других протоколов, таких как ftp, pop3 и т.д., И я уверен, что sc доступен. Попробуйте Google для этого, также вы можете найти его на codeproject.com
рассматривает
Ответ 5
Отметьте почтовый компонент Mail.dll.NET, он имеет поддержку MIME, unicode и многонациональная поддержка по электронной почте:
MailBuilder builder = new MailBuilder();
// Here you get the message class with attachments, visuals
IMail message = builder.CreateFromEml(File.ReadAllText("test.eml"));
// you can access entire MIME document:
MimeDocument document = message.Document;
Обратите внимание, что Mail.dll - это коммерческий продукт, который я создал.
Вы можете скачать его здесь: https://www.limilabs.com/mail.
Ответ 6
ознакомьтесь с нашей Rebex Secure Mail, которая включает в себя (ИМХО) достойный синтаксический анализатор S/MIME. Возможности включают:
- API-интерфейс высокого уровня MailMessage (сообщение, как видно на обычном почтовом клиенте)
- Низкоуровневый API MimeMessage (доступ к внутреннему дереву S/MIME)
- Поддержка MIME, S/MIME
- Поддержка TNEF (winmail.dat), созданного Microsoft Outlook
- Шифрование сообщений
- Подписание сообщений
- Поддержка Unicode и интернационализации.
- Список связанных ресурсов (используется для встроенных CSS и изображений в почтовых сообщениях HTML)
- IEnumerable < Т > поддержка (необходима для LINQ)
- поддерживает все .NET и .NET compact framework, выпущенные до сегодняшнего дня.
Парсер является частью Rebex Secure Mail, и вы можете загрузить его здесь.