Outlook:如果在部分缓存Exchange模式下提供存储ID,则GetItemFromID不起作用

时间:2016-10-20 10:03:50

标签: outlook outlook-addin

我正在尝试使用mapiNameSpace.GetItemFromID(entryId,storeID)检索项目。 我正在使用部分缓存交换模式(即缓存仅一个月)。 该方法适用于缓存项目。但是当我尝试一个月以上的项目时,会抛出以下异常

System.Runtime.InteropServices.COMException (0x8004010F): The message you specified cannot be found.
   at Microsoft.Office.Interop.Outlook.NameSpaceClass.GetItemFromID(String EntryIDItem, Object EntryIDStore)

但是,如果我只使用entryID尝试它并且它正在工作。但这将耗费时间,因为它将搜索所有商店。

在部分缓存模式下使用storeID参数时出错的原因是什么?

P.S。此问题仅适用于Outlook帐户设置中的部分缓存Exchange模式。完全打开/关闭时不是

1 个答案:

答案 0 :(得分:0)

如果您未指定商店条目ID,则Outlook不会搜索所有商店。 Outlook调用IMAPISession::OpenEntry。如果商店已在当前会话中打开,则它有机会注册自己的条目ID,以便MAPI系统知道将该呼叫定向到哪个商店。否则,您会收到“未知条目ID”错误。如果指定了商店条目ID,则首先打开它,然后使用IMsgStore::OpenEntry打开消息。

在您的情况下可能会发生的事情是该项目是从在线商店打开的,这是因为呼叫通过网络而很昂贵。

相关问题