0

使用 ac# vsto addin 我正在尝试访问收件箱文件夹的相关内容,我认为它代表了活动视图。(目标是弄乱 pr_view_state 属性中的 blob)。问题是只有当我首先从 UI 访问“视图设置”时,才能访问该项目。顺便说一句,即使使用 Outlook Spy,我也观察到相同的行为

Outlook.MAPIFolder inbox = Globals.ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.StorageItem storageItem = inbox.GetStorage("IPM.Microsoft.FolderDesign.NamedView",  Outlook.OlStorageIdentifierType.olIdentifyByMessageClass);
Outlook.PropertyAccessor pa = storageItem.PropertyAccessor;
const string PR_NORMALIZED_SUBJECT = "http://schemas.microsoft.com/mapi/proptag/0x0E1D001F";
const string PR_VIEW_STATE = "http://schemas.microsoft.com/mapi/proptag/0x68350102";
string normViewName = pa.GetProperty(PR_NORMALIZED_SUBJECT).ToString();

正如我所说,如果我在 Outlook GUI 中使用视图设置,那么上面的代码可以工作(项目也显示在 Outlook Spy 中),如果没有,则 pr_normalized_subject 返回一个空字符串,访问 pr_view_state 属性会引发异常。我究竟做错了什么?

4

1 回答 1

0

不保证存在文件夹视图。如果不存在,GetStorage 将创建一个具有指定消息类的新关联消息,因此主题和视图状态属性将为空。

你确定它存在吗?访问视图状态时出现什么错误?当您遇到此问题时,您在 OutlookSpy 中究竟看到了什么?

如果使用Redemption是一个选项,您可以使用类似RDOFolder.HiddentItems.Find("MessageClass = 'IPM.Microsoft.FolderDesign.NamedView' "). 如果消息不存在,您将返回 null。

于 2014-09-20T18:49:17.120 回答