在Outlook中以缓存模式从交换获取已发送项目的消息ID

时间:2015-02-04 20:13:49

标签: c# exchange-server outlook-addin

如果不使用缓存模式,我在outlook中获取消息ID(使用propertyaccessor),用于发送项目的Microsoft交换电子邮件。

但是,在缓存模式下,它是空的。

如何以缓存模式获取它?

1 个答案:

答案 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)