Подтвердить что ты не робот

Существуют ли методы .NET Framework для анализа электронной почты (MIME)?

Существует ли класс или набор функций, встроенных в .NET Framework (3.5+), для анализа необработанных электронных писем (документы MIME)?

Я не ищу ничего необычного или отдельной библиотеки, он должен быть встроен. Я буду использовать это в некоторых модульных тестах и ​​вам нужно только захватить основные заголовки интереса (To, From, Subject) вместе с телом (который в этом случае всегда будет текстовым и, следовательно, не имеет MIME-деревьев или границ). Я написал несколько парсеров MIME в прошлом, и если нет ничего доступного, я просто собираю что-то из регулярных выражений. Было бы здорово сделать что-то вроде:

MailMessage msg = MailMessage.Parse(text);

Мысли?

4b9b3361

Ответ 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";

Ответ 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, и вы можете загрузить его здесь.