我正在使用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)
,但它没有显示任何效果,我找不到任何其他互操作函数做所需的事情。
编辑:禁用缓存模式时,一切运行正常,但一旦我打开它,我不知道如何强迫它获得消息
非常感谢!
-
等待直到同步完成-使用
Namespace.SyncObjects
收集,检索第一个SyncObject
对象,调用SyncObject.Start
并等待SyncObject.SyncEnd
事件触发。 -
在扩展的MAPI级别(c++或Delphi)或Redemption(我是它的作者,它包装了扩展的MAPI,可以在任何语言中使用),通过使用
MAPI_NO_CACHE
(0x200
)标志(IMsgStore::OpenEntry in Extended MAPI或RDOStore)在在线模式下打开消息。GetMessageFromID
in Redemption).