EWS - Outlook互操作同步



我正在使用ExchangeServer 2010 SP2和Outlook 2013

首先我用EWS保存一封邮件到草稿文件夹

EmailMessage.Save()

之后,我试图通过互操作打开邮件但是我得到一个COMException,项目不存在

        Outlook.Application app = new Outlook.Application();            
        Outlook.NameSpace mapi = app.GetNamespace("MAPI");            
        Outlook.MAPIFolder draftFolder = mapi.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDrafts);
        //Custom function to get EntryID
        string entryId = GetMessageId(email,IdFormat.HexEntryId);
        string storeId = draftFolder.StoreID;
        MailItem item = null;
        try
        {
            item = mapi.GetItemFromID(entryId, storeId);
        }
        catch (COMException)
        {
            //Item not found
        }

是否有办法强制Outlook与Exchange服务器同步草稿文件夹?

我用过Session.SendAndRecieve(true)

,但它没有显示任何效果,我找不到任何其他互操作函数做所需的事情。

编辑:禁用缓存模式时,一切运行正常,但一旦我打开它,我不知道如何强迫它获得消息

非常感谢!

  1. 等待直到同步完成-使用Namespace.SyncObjects收集,检索第一个SyncObject对象,调用SyncObject.Start并等待SyncObject.SyncEnd事件触发。

  2. 在扩展的MAPI级别(c++或Delphi)或Redemption(我是它的作者,它包装了扩展的MAPI,可以在任何语言中使用),通过使用MAPI_NO_CACHE (0x200)标志(IMsgStore::OpenEntry in Extended MAPI或RDOStore)在在线模式下打开消息。GetMessageFromID in Redemption).

最新更新