Самым простым способом является, конечно, убедиться, что все сообщения кэшируются локально в файле OST.
Другие варианты - открыть папку в онлайн-режиме. На уровне Extended MAPI (C ++ или Delphi) вам нужно будет использовать MAPI_NO_CACHE
бит при вызове IMAPISession::OpenEntry
- вы можете играть с этим битом в OutlookSpy : нажмите кнопку IMAPIFolder, выберите свойство PR_ENTRYID, справащелкните, выберите IMAPISession :: OpenEntry, убедитесь, что MAPI_NO_CACHE отмечен.
В случае языков, отличных от C ++ или Delphi, вы можете использовать Redemption - его версии GetFolderFromID
, GetMessageFromID
и т. д. позволяют передавать флажки, которые будут использоваться IMAPISession::OpenEntry
.
MAPI_NO_CACHE = &H0200
MAPI_BEST_ACCESS = &H0010
set OomFolder = Application.ActiveExplorer.CurrentFolder
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set RdoFolder = Session.GetFolderFromID(OomFolder.EntryID, , MAPI_NO_CACHE Or MAPI_BEST_ACCESS)
MsgBox "Number of items in the online folder: " & RdoFolder.Items.Count
Затем можно выполнить поиск в сетевой версии папки, используя RDOFolder.Items.Find/FindNext/Restrict/MAPITable.ExecSQL
.