eml文件的解析和发送 [三角猫]

最近,我发布了几篇关于 .NET 和 EML 文件的邮件相关 的博文,引来了一些网友的关注与讨论。尤其是对于“如何解析EML文件的内容”和 “发送现有的EML文件”。

目前,比较主流的解析EML文件的方式,基本是对MIME格式的分析,基于对 RFC822及其后续扩展的标准 的理解。但是,此种方法工作量太大,且过于繁琐。

我是个懒人,喜欢找捷径

大家都知道,微软的 outlook express 是可以保存和打开并发送EML文件的。那么很明显,outlook express 肯定是可以解析EML文件的。

问题就来了:我们可不可以利用微软现有的成果呢?

针对这个问题,我们再回到.NET中发送邮件的功能上,为了体现的明显,我们回到.NET 1.1上,.NET 1.1 发送邮件的是 System.Web.Mail ,这个System.Web.Mail 当时是比较弱的,原因就是它是基于 cdosys.dll 的基础上的且并未做富实现。

cdosys.dll是从windows 2000 开始被正式引入的,后续的操作系统都支持,关于cdosys.dll的细节,请看MSDN

经过一个晚上对cdosys的研究,终于得出了结果:CDOSYS是可以加载eml文件并进行解析和直接发送的

cdosys属于COM,在.NET使用,需要添加COM引用。

CDOSYS

 

添加引用,会在项目的引用里出现下面的2项:

image

下面我对发送EML文件,封装了一个类(只做了基本封装,大家可以自己扩展)

EML文件发送类

 

使用实例

 

至此, 我关于.NET 发送MAIL和保存EML,以及对EML的发送和解析相关的内容, 算是告一段落了。

希望大家多拍砖吧。

posted @ 2009-05-21 11:56  三角猫  阅读(2613)  评论(6编辑  收藏  举报