是否有.NET Framework方法来解析电子邮件(MIME)?

Nei*_*ski 21 .net c# email parsing mime

.NET Framework(3.5+)中是否有一类或一组函数来解析原始电子邮件(MIME文档)?

我不是在寻找任何花哨的东西或单独的库,它需要内置.我将在一些单元测试中使用它,并且只需要获取感兴趣的主标题(To,From,Subject)以及正文(在这种情况下将始终是文本,因此没有MIME树或边界).我以前写了几个MIME解析器,如果没有现成的东西,我只会把正则表达式中的东西放在一起.能够做到这样的事情会很棒:

MailMessage msg = MailMessage.Parse(text);
Run Code Online (Sandbox Code Playgroud)

思考?

Joh*_*zen 24

我知道你说没有外部库,但我在codeplex上发布了一个库:

https://bitbucket.org/otac0n/mailutilities

MimeMessage msg = new MimeMessage(/* string, stream, or Byte[] */);
Run Code Online (Sandbox Code Playgroud)

它已经过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";
Run Code Online (Sandbox Code Playgroud)

  • 是的,一点没错. (3认同)
  • 谢谢约翰,我正在寻找类似的东西,发现你的正则表达式非常有用.我写了一个解析电子邮件标题的Outlook MailItem的扩展方法:http://www.lessanvaezi.com/email-headers-from-outlook-mailitem/ (2认同)

Dun*_*art 15

免费,开源(MIT许可)和快速MimeKit给人留下了深刻的印象