Outlook赎回使用未包装的RDOStore引发MAPI_E_OBJECT_CHANGED错误,保存RDOMail

时间:2019-06-19 00:57:52

标签: outlook outlook-addin outlook-redemption

这是Outlook interop code throws "message has been changed" error the second time when the code tries to save a mail item的后续问题。

虽然解包装的存储可以正常工作一段时间,但是今天,我发现使用IMAP帐户的客户端计算机在调用RDOMail.Save方法时,即使解包装的存储也引发了MAPI_E_OBJECT_CHANGED错误。

这是示例C#代码:

var rdoSession= RedemptionLoader.new_RDOSession();
rdoSession.MAPIOBJECT = new Application().Session.MAPIOBJECT;
var rdoMail = rdoSession.GetRDOObjectFromOutlookObject(mailItem);
var unwrappedRdoStore = rdoSession.Stores.UnwrapStore(rdoMail.Parent.Store);
var unwrappedRdoMail = unwrappedRdoStore.GetMessageFromID(mailItem.entryId);
unwrappedRdoMail.Subject = "new subject";
unwrappedRdoMail.Save();

Save调用会引发以下错误:

System.Runtime.InteropServices.COMException (0x80040109): Error in IMAPIProp::SaveChanges: MAPI_E_OBJECT_CHANGED
ulVersion: 0
Component: Outlook Data File
ulLowLevelError: 0
ulContext: 805634562

有人对这个问题有任何想法吗?

0 个答案:

没有答案