C# MAPIfolder关联的内容在Outlook中不一致可用?

C# MAPIfolder关联的内容在Outlook中不一致可用?,c#,outlook,mapi,spy,C#,Outlook,Mapi,Spy,使用VSC加载项,我试图访问Inbox文件夹的相关内容,我认为它代表了活动视图。目标是处理pr_view_state属性中的blob。问题是,只有当我首先从UI访问视图设置时,该项才变得可访问。顺便说一句,即使使用Outlook Spy,我也观察到同样的行为 Outlook.MAPIFolder inbox = Globals.ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox

使用VSC加载项,我试图访问Inbox文件夹的相关内容,我认为它代表了活动视图。目标是处理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属性会抛出一个异常。我做错了什么?

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

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


如果使用是一个选项,则可以直接使用RDOFolder.HiddentItems.FindMessageClass='IPM.Microsoft.FolderDesign.NamedView'之类的内容访问关联的消息。如果消息不存在,您将返回null。

视图肯定存在,Outlook客户端正在使用它,因为您可以看到正在进行条件格式设置,如果单击功能区上的“更改视图”按钮,我会看到我的自定义视图是活动视图。但是,在我单击“视图设置”并对其进行一些更改之前,它不会显示在Outlook Spy或“我的代码”中。此外,一旦我访问它并对blob进行更改并将其保存回视图,视图就会相应地更新,并且它会被持久化。因此,如果我重新启动Outlook,我可以看到修改后的视图生效。但是,在执行某些GUI操作之前,我将再次失去对该属性的访问权限。如果您无法在OutlookSpy中看到该视图,则该视图实际上不存在。请记住,Outlook不会使用视图定义创建隐藏邮件,除非它被实际修改。您到底是如何修改blob的?是否使用MAPI或Outlook对象模型执行此操作?