如果不使用缓存模式,我在outlook中获取消息ID(使用propertyaccessor),用于发送项目的Microsoft交换电子邮件。
但是,在缓存模式下,它是空的。
如何以缓存模式获取它?
答案 0 :(得分:1)
高速缓存的商店不会从Exchange商店为已发送邮件文件夹同步该属性。
在低(扩展MAPI)级别,您需要使用MAPI_NO_CACHE标志在联机模式下重新打开消息。您不能单独使用Outlook对象模型或扩展MAPI(因为它需要C ++或Delphi)。如果使用Redemption是一个选项,它将允许您在在线模式下重新打开一条消息。在VB脚本中,您可以执行以下操作(C#将非常相似):
MAPI_NO_CACHE = &H200
MAPI_BEST_ACCESS = &H10
PR_INTERNET_MESSAGE_ID_W = "http://schemas.microsoft.com/mapi/proptag/0x1035001F"
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Msg = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID, , MAPI_NO_CACHE + MAPI_BEST_ACCESS)
MsgBox Msg.Fields(PR_INTERNET_MESSAGE_ID_W)