使用c#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属性会引发异常。我做错了什么?
答案 0 :(得分:0)
不保证文件夹视图存在。如果它不存在,GetStorage将使用指定的消息类创建新的关联消息,因此主题和视图状态属性将为空。
你确定它存在吗?访问视图状态时出现的错误是什么?当你遇到这个问题时,你在OutlookSpy中看到了什么?
如果使用Redemption是一个选项,您可以使用RDOFolder.HiddentItems.Find("MessageClass = 'IPM.Microsoft.FolderDesign.NamedView' ")
之类的内容直接访问相关消息。如果消息不存在,您将返回null。