【发布时间】:2012-02-24 00:20:18
【问题描述】:
我正在尝试使用SharpMimeTools 和来自Hunny Software 的一些示例Mime 消息来解析MIME 消息。我设法从一个文件中创建了一条新消息并将解码的正文保存到一个文件中(它是一个 png 图像),但是创建的文件已损坏。大多数示例文件和我提取的文件看起来相同,但也有区别。
文件可以在这里找到:
- 作为文本文件的原始消息:m0013.txt
- 原始PNG-图片:Blueball_original.png
- 提取的损坏的 PNG 图片:Blueball.png
文件十六进制视图的摘录:
原文:
89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52
00 00 00 1b 00 00 00 1b 08 03 00 00 00 ba 0a 04
67 00 00 03 00 50 4c 54 45 ff ff ff 00 00 08 00
00 10 00 00 18 00 00 00 00 08 29 00 10 42 00 10
4a 00 08 31 00 10 52 08 21 73 08 29 7b 08 29 84
08 21 6b 00 18 5a 00 08 39 08 21 63 10 39 9c 18
42 a5 18 42 ad 18 42 b5 10 39 a5 10 31 94 00 18
提取:
3f 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52
00 00 00 1b 00 00 00 1b 08 03 00 00 00 3f 0a 04
67 00 00 03 00 50 4c 54 45 3f 3f 3f 00 00 08 00
00 10 00 00 18 00 00 00 00 08 29 00 10 42 00 10
4a 00 08 31 00 10 52 08 21 73 08 29 7b 08 29 3f
08 21 6b 00 18 5a 00 08 39 08 21 63 10 39 3f 18
42 3f 18 42 3f 18 42 3f 10 39 3f 10 31 3f 00 18
...最后,这是我正在使用的代码:
public void MIMETest()
{
FileStream fileStream = new FileStream(@"D:\m0013.txt", FileMode.Open);
SharpMimeMessage m = new SharpMimeMessage(fileStream);
fileStream.Close();
parseMessage(m);
}
public void parseMessage(SharpMimeMessage message)
{
if (message.IsMultipart)
{
foreach (SharpMimeMessage subMessage in message)
{
parseMessage(subMessage);
}
}
else
{
System.IO.File.WriteAllText(@"D:\Extracts\" + message.Name,
message.BodyDecoded, message.Header.Encoding);
}
}
你对如何解决这个问题有什么建议吗?
【问题讨论】:
-
FWIW,您可能应该查看MimeKit,因为它解析消息的速度比 SharpMimeTools 快 75 倍。它也更加健壮且符合标准。
标签: c# .net parsing email mime