对MIME格式的邮件文件进行解码获取其可读内容和附件等
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                对MIME格式的邮件文件进行解码获取其可读内容和附件等
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                這幾天需要將一個OA系統X的所有郵件導入到OA系統Y,X的所有郵件采用MIME格式的文件保存在磁盤上,因此我需要讀取這些文件的內容,并解析出其中的所有相關內容然后導入到Y中。對于純文本的郵件還好說,麻煩的是那種帶Html格式或者帶有附件的郵件,經過網上翻箱倒柜般的一頓搜索,最終發現了一份可以利用的源代碼,其中我需要的是NET目錄下的那個項目的MIME部分。
 但是經過測試,其中有一點問題,主要是對中文的支持和對字節數的計算問題,經過我的修改和把一些我不需要的功能剔出,得到一個“MimeDecoder”,其中程序集的名字原來是LumiSoft.Net.dll,我重新編譯為MimeDecoder.dll,保留了原作者的命名空間,不知道這么做是否有悖“道義”?我不是很懂那些開源協議,如果做法不妥或者還欠缺什么,請懂得人給我個建議,謝謝。
 這個MimeDecoder的基本用法是這樣的:
????????????FileStream?fs?=?File.OpenRead("MyMimeFile.in");
????????????byte[]?buffer?=?new?byte[fs.Length];
????????????fs.Read(buffer,?0,?(int)fs.Length);
????????????fs.Close();
????????????//分析郵件內容
????????????LumiSoft.Net.Mime.MimeParser?p?=?new?MimeParser(buffer);
????????????MessageBox.Show(p.Subject);
????????????MessageBox.Show(p.BodyText);
????????????Response.Write((p.MimeEntries[i]?as?MimeEntry).FileName?+?"<br>");
????????????foreach?(MimeEntry?entry?in?p.MimeEntries)????//原作者的MimeEntries用ArrayList,可能是針對.NET?1.1寫的,我把他修改成了List<MimeEntry>,方便使用
????????????{
????????????????if?(false?==?string.IsNullOrEmpty(entry.FileName))????//這里我們只保存附件
????????????????{
????????????????????fs?=?File.Create(entry.FileName);
????????????????????fs.Write(entry.Data,?0,?entry.Data.Length);
????????????????????fs.Close();
????????????????}
????????????}
用法還是比較簡單的。
由于趕時間,這個類庫修改后是否還有其他問題還沒有仔細測試(但是絕對不是沒測試過),如果再發現新問題并解決之后,我會及時更新這里。
最后,非常感謝這套類庫的原作者Ivar Lumi,解決了我的大問題。
這里是我修改后的類庫的源代碼 ,發布在首頁,給所有需要的人,如果不合適在首頁,告訴我,我換個分類。
轉載于:https://www.cnblogs.com/Ricky81317/archive/2007/10/19/929298.html
總結
以上是生活随笔為你收集整理的对MIME格式的邮件文件进行解码获取其可读内容和附件等的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 也论PageController/Fro
- 下一篇: jstl:sql标签介绍
