MS Outlook VBA中Table与MailItem的邮件属性值差异原因咨询
Outlook VBA中Table与MailItem的属性差异解析
一、Size属性的16字节差异原因
Outlook的Table对象和MailItem对象计算邮件大小的逻辑存在本质区别:
Table里的Size字段是直接读取邮件存储介质(PST文件或Exchange服务器)中的原始存储大小,完全对应邮件内容本身的字节数。MailItem.Size属性返回的是Outlook加载完整邮件对象后的带封装头的大小——这16字节是MAPI(邮件应用程序编程接口)为封装邮件属性信息添加的额外开销,属于Outlook对象实例运行时的附加结构,并非邮件原始内容的一部分。
这种差异是Outlook对象模型的设计决定的:Table是轻量级数据查询工具,仅返回存储层的原始数据;而MailItem是完整的对象实例,需要包含额外的运行时元数据,因此会多出这16字节。
二、空日期对应4501年1月1日的原因
你看到的949998是Outlook内部标记“未设置日期属性”的特殊序列号:
- 当邮件的
SentOn或ReminderTime未设置时,MAPI层会返回一个默认的空值标记,Outlook对象模型将这个标记转换成了数值949998。 - Excel的日期系统以1900年1月1日为序列号1,949998天换算后正好是4501年1月1日。而
Table对象直接读取存储数据,会返回空值(或Null),不会做这个转换,因此两者表现出差异。
内容的提问来源于stack exchange,提问作者NewSites
相关产品推荐
相关产品推荐

