我試圖解析MIME郵件,使用SharpMimeTools和Hunny Software的一些示例Mime消息。我設法從一個文件創建一個新的消息,並將解碼後的文件保存到一個文件(這是一個PNG圖像),但創建的文件已損壞。大部分示例文件和我所討論的示例文件看起來都是一樣的,但有差異。使用anmar.SharpMimeTools解析MIME郵件
這些文件可以在這裏找到:
- 原始郵件作爲一個文本文件:m0013.txt
- 的origninal 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(https://github.com/jstedfast/MimeKit),因爲它是在75X解析的消息比SharpMimeTools更快。它也更加健壯和符合標準。 – jstedfast 2014-02-13 21:58:21