使用OpenSharedItem功能读取.msg文件,如果收件人在保存文件后更改了名称,则遇到确定电子邮件收件人的问题。
如果.msg文件保存在磁盘上,我可以读取PR_RECEIVED_BY_EMAIL_ADDRESS以取回Exchange地址格式的接收电子邮件地址,但如果此人更改了名称,则CN =不再匹配。
我一直在使用下面的内容回读收到的电子邮件地址,直到我遇到这个问题:
Outlook.PropertyAccessor propAccess = mailItem.PropertyAccessor;
propAccess.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0076001E");
返回如下的Exchange地址: / O =组织/ OU = Exchange管理组/ CN =收件人/ CN =
有没有办法将旧地址解析为当前显示名称?
任何建议都将不胜感激。
答案 0 :(得分:1)
首先,检查是否存在PR_RECEIVED_BY_ENTRYID属性(您可以在OutlookSpy中执行此操作 - 单击OpenIMsgOnIStg
)。如果存在,请使用http://schemas.microsoft.com/mapi/proptag/0x003F0102
读取PR_RECEIVED_BY_ENTRYID属性(DASL名称PropertyAccessor.GetProperty
),使用PropertyAccessor.BinaryToString
将其转换为十六进制字符串,然后使用它来调用Namespace.GetAddressEntryFromID
。然后,您可以从AddressEntry.Name
属性中检索当前名称。如果属性不存在或GetAddressEntryFromID
失败(如果条目已经消失或者您在没有原始Exchange服务器的配置文件中打开),请准备好处理错误。