我使用OpenPop.NET来解析存储在数据库中的电子邮件(MIME)消息。
大多数消息都被很好地解析了,但是在其中一些消息体中没有得到解析。
我将主体作为多部分格式的文本,如下所示:
This is a multi-part message in MIME format.
------=_NextPart_000_0027_01C98F52.9826A710
Content-Type: text/plain;
charset="windows-1255"
Content-Transfer-Encoding: base64
8eHh5CwNCg0K4PDpIPHl7uv6IPLs6eog+fr08unsIOD6IPfx7unqLi4uLi4uLi4uDQoNCiANCg0K
8OX46fog4e8g5Pjl+Q0KDQrg6e709+gg7vL46+X6IPrl6/DkDQoNCiANCg0KICBfX19fXyAgDQoN
CkZyb206IFlvc2kgTGV2eSBbbWFpbHRvOnlfbGV2eUByYW1iYW0uaGVhbHRoLmdvdi5pbF0gDQpT
...
...
我注意到在这些邮件中,标题没有将邮件定义为“Content-Type:multipart / mixed;”。例如,当我保存整个邮件并尝试在Thunderbird中打开它时,邮件正文是多部分邮件,未解析。
我希望单独解析多部分邮件正文,而不是电子邮件的一部分。我怎样才能做到这一点?我使用.NET 3.5(尽管我也将采用.NET 4解决方案)。
谢谢!
答案 0 :(得分:1)
没有任何MIME解析器能够开箱即用地处理这种特殊类型的破坏。您可以做的是搜索以" - "开头的行,然后读取该行的其余部分(修剪前2个破折号)以用作边界字符串
然后,一旦你得到了这个,请提前:
string.Format ("Content-Type: multipart/mixed; boundary=\"{0}\"\r\n", boundary);
然后尝试再次解析它。
顺便说一句,如果你要分析很多消息,我建议你查看MimeKit,因为它比OpenPOP的解析器快25倍,而且还有更多的RFC兼容。希望有所帮助。