日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对MIME格式的邮件文件进行解码获取其可读内容和附件等

發布時間:2025/6/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对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格式的邮件文件进行解码获取其可读内容和附件等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。