OpenSharedItem查找收件人

时间:2015-05-29 08:43:55

标签: c# outlook office-interop msg

使用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 =

有没有办法将旧地址解析为当前显示名称?

任何建议都将不胜感激。

1 个答案:

答案 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服务器的配置文件中打开),请准备好处理错误。