Cemail.vol 中 有:
1.pmailFolders 文件夹的表用于指定inbox ,outbox ,draft等各种邮件的文件夹!
2 pmailMsgs,它是邮件与文件夹的关联中介,也是附件与邮件的关联中介,是整个邮件系统的关联体,存储邮件与文件夹的关系!
3.pmailMsgClasses 该表存储了邮件的类型名( 如 IPM。Note指一般的邮件, IPM。Shedule.Meeting 指通知类邮件等等!)
4.pmailNamedProps 作用未知!
5 pmailAttachs 存储附件与pmailMsgs的关系以及附件的一些信息!
6.fldr3100001d 收件箱,存储了邮件与pmailMsgs 的关系,与 pmailMsgClasses的关系,以及邮件的一些信息(时间,收件人,发件人,时间等)!
7.fldr31000020 Deleted Items
等等fldr。。表都是根据pmailFolders建立
添加一封邮件
注:每条记录的0x8001写的是记录自己的CEOID!
1. 在pmailFolders中找存放邮件的文件夹,获取文件夹记录的0x8001和0x8005两个字段的值 ,0x8001是文件夹记录的CEOID,0x8005是根目录的CEOID!
2. 在pmailMsgs中建立一条记录,把pmailFolders中获得的0x8001和0x8005两个字段的CEOID分别写到pmailMsgs中的0x0e09和 0x8011两个字段中
3. 同时在对应的文件夹中生成一条记录,比如,如果是inbox中收到的邮件,那就是在对应的fldr3100001d表中生成一条新的记录,记录包含了邮件的收件人,发件人,时间等内容!
4. fldr3100001d中0x001a 字段需要根据邮件的类型在pmailMsgClasses 中寻找相应的类型(pmailMsgClasses的0x8300字段保存了类型),比如普通邮件的类型为IPM。Note,找到后把类型记录的CEOID值写入fldr3100001d的0x001a 字段中。这时的邮件记录就具有了邮件的所有属性!
5. 再把pmailMsgs的0x8006字段更新为fldr3100001d中该邮件记录CEOID值,把 fldr3100001d 的0x8005字段更新为 pmailMsgs中刚生成的记录CEOID值。相当与两个表中同时生成的两个记录相互存储彼此的CEOID值。这样邮件和文件夹就形成了关联。
6. 根据pmailMsgs这条记录找到fldr3100001d中对应的记录如果发现fldr3100001d中的 0x0e1b字段为1的话,就在pmailAttachs中建立一条记录把pmailMsgs 中记录的CEOID值 写入0x8100 字段中,这条记录保存附件的信息,同时由于pmailMsgs中记录的写入使得附件和邮件关联了起来。
收到一封邮件的过程也就结束了,这时邮件和附件,文件夹形成了关联!!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Leroy_xie/archive/2007/08/09/1734986.aspx