拼吾爱程序人生.Net编程Visual Studio.NET 对MIME格式的邮件文件进行解码

1  /  1  页   1 跳转 查看:1929

对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 as MimeEntry).FileName + "
");
  foreach (MimeEntry entry in p.MimeEntries) //原作者的MimeEntries用ArrayList,可能是针对.NET 1.1写的,我把他修改成了List,方便使用
  {
  if (false == string.IsNullOrEmpty(entry.FileName)) //这里我们只保存附件
  {
  fs = File.Create(entry.FileName);
  fs.Write(entry.Data, 0, entry.Data.Length);
  fs.Close();
  }
  }
用法还是比较简单的。
  由于赶时间,这个类库修改后是否还有其他问题还没有仔细测试(但是绝对不是没测试过),如果再发现新问题并解决之后,我会及时更新这里。

  最后,非常感谢这套类库的原作者Ivar Lumi,解决了我的大问题,源码下载:
 附件: 您所在的用户组无法下载或查看附件


来源:零度的火 - 博客园

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Visual Studio.NET] 的这些文章也感兴趣:

VB 6 to VB.NET Migration Proceeds Ever So Slowly
利用.net2.0中的GZip或Deflate压缩文件
针对VS 2005/2008的Code Project浏览器
C#中对POP3邮件解码
Dime Casts .NET - 学习.NET开发新技术的视频播客
微软Server 2008/VS 2008四月底中文版上市
Novell 发布了Mono调试器(Debugger )的0.8版
.NET框架图解之七:Winform
微软发布Enterprise Library 4.1和Unity 1.2
对象解耦和设计模式
 

回复:对MIME格式的邮件文件进行解码

thaks
 
1  /  1  页   1 跳转

快速回复帖子

标题
禁用 URL 识别
禁用表情
禁用 Discuz!NT 代码
使用个人签名
  [完成后可按 Ctrl+Enter 无刷新发布]  

版权所有 拼吾爱程序人生    

Powered by Discuz!NT 2.1.202   Copyright © 2001-2008 Comsenz Inc. 鄂ICP备07500843号
返顶部