2013-06-04 112 views
0

經過很多努力,我創建了自己的郵件解析器。現在成功地解析和顯示電子郵件。但是很少有郵件,尤其是蘋果或Iphone發送的郵件在解析後出現。我不知道爲什麼會發生這種情況。請幫忙。 D9 = 84 = D8 = A8 = D8 = AC = D9 = 87 = D9 = 86 = D9 = 8A = D9 = 85 = D8 = B4 = D9 = 83 = D9 = 84 = D8 = A9 = D8 = A5 = D8 = B4 = D8 = A7 = D8 = B1 = D8 = A9 = D9 = 84 = D9 = 84 = D9 = 83 = D8 = B1 = D8 = AA = D8 = B1 = D9 = 82 = D9 = 85 410814189 = 68 = D8 = B9 = D9 = 84 = D9 = 85 = D8 = A7 = D9 = 8B = D8 = A8 = D8 = A3 = D9 = 86 = D8 = D8 =解析MIME郵件類型

+0

如果我的回答對你有用,你能接受嗎?謝謝! – jstedfast

+0

有完整源代碼的最終解決方案? – Kiquenet

+0

我只是設法爲我的需要創建一個。我無法找到可以處理所有郵件類型的郵件。 –

回答

1

看來您的郵件解析器不處理Quoted Printable內容的解碼。

我想,如果你看了標題,你會發現這樣的標題:

內容傳輸編碼:引用可打印

我已經寫了幾個電子郵件客戶端和多個啞劇解析器,我目前正在C#中編寫一個新的MIME解析器(其他人在C中),這裏叫做MimeKit:http://github.com/jstedfast/MimeKit。這可能是你感興趣的...

我有一個可過濾的流類,你可以添加一個QuotedPrintableDecoder(我也已經實現),然後通過你的數據來解碼它。或者,您可以直接通過QuotedPrintableDecoder傳遞它,具體取決於最簡單的方法。

用法示例:

var decoder = new QuotedPrintableDecoder(); 
var output = new byte[decoder.EstimateOutputLength (input.Length)]; 
var outputLength = decoder.Decode (input, 0, input.Length, output); 

// convert the output into a string displayable to the user... 
var text = System.Text.Encoding.UTF8.GetString (output, 0, outputLength); 

顯然你使用正確的System.Text.Encoding的內容(通過查看在Content-Type頭的「字符集」參數),而不是盲目地使用系統.Text.Encoding.UTF8。