邮件内容分析

   郁闷了一个多星期的问题终于有眉目了。
    问题本身其实不是很难,要从outlook和outlook express邮箱里面将所有的邮件提取出来,并且能够得到主题,发件人,收件人,正文,附件等内容。
    邮件客户端会把服务器端的邮件下载下来,并保存到本地的某个目录中,outlook是保存成pst格式的,outlook express是保存成dbx格式的,这两种格式都是一个文件存放n个邮件的方式。
    首先能想到的方法就是直接去解析这些格式,我很顺利的从网上下载到了格式解析的源代码,可以将pst格式转化为msg格式,可以将dbx文件解析成eml文件,后面的两种文件格式都是存放一个邮件的,并且可以用相应的邮件可户端打开。
    现在只要解析这2种格式就可以了,眼看顺利就在眼前,谁知道这时候问题出来了,msg格式还好,是用unicode编码的,以明文形式储存。而eml是采用mime标准的,英文一般是用base64编码格式的,这个从网上顺利找到源代码解开。但是中文的时候就麻烦了,一般默认的编码是采用gb2312字符集,quoted-printable编码格式。由于中文邮件中一般都有英文字母,所以里面一般是采用base64和quoted-printable混编的模式,而文件是用超文本格式存放的,如果自己解析的话估计要花不少时间,而且考虑到有可能采用繁体和unicode字符集,不同的编码格式,估计是个漫长的过程。
    把直接解析编码放在一边,考虑mime标准。在网上一搜,果然不少mime的源码,那过来一试,也还是只支持英文的。不过终于发现有gmime2标准,是最新的邮件编码标准,提供源代码,迫不及待的下来以后,希望又破灭了。只有for debian的版本,还要n个库支持,改成能在windows下能够编译通过的版本也不是一件容易的事情啊,而且这个代码的作者还写道,如果谁能在windows下编译通过的话,记得告诉他一下。
    正在抉择是自己解析格式好还是改编gmime2好的时候,突然发现自己有点傻。既然outlook和outlook express能够读的话,按照微软的风格,应该会有API提供的。就像WORD一样,我前面的努力就像是要把WORD格式分析的清清楚楚,然后编码实现,而放着现成的接口不用。
    下面的工作就简单了,支持邮件的dll是MAPI.dll,里面包罗万象,从接受,发送,解析甚至构建邮件服务器都有。下载MSDN的例程后,outlook express可以顺利解决,根本连dbx格式都不用分析,直接有接口按顺序找邮件,得到邮件内容。outlook方面例程不支持,老是说我的邮件默认配置有问题,不过既然走到这一步了,方法就多的是了,我采用的是CreateDispatch方式,跟控制office一样。根据接口描述很方便的可以解析每一封邮件。
    问题从技术上来说基本上解决了,但是还要有一些局限性,比如某个单独的.eml文件,或者是没有加到客户端的dbx或者pst文件都不能解析。不过大部分能做就可以了。这些问题留到以后再解决吧。还要foxmail,估计也要研究个半天了,先不考虑这些吧。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值