【发布时间】:2022-02-04 23:52:20
【问题描述】:
我正在尝试使用 Redemption 和代码从 Outlook 插件添加 pst 商店:
RdoSession = Redemption.RedemptionLoader.new_RDOSession();
RdoSession.MAPIOBJECT = (AddinModule.CurrentInstance as AddinModule).OutlookApp.Session.MAPIOBJECT;
string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Microsoft\Outlook\mystore.pst";
RDOStores stores = RdoSession.Stores;
RDOStore store = stores.AddPSTStore(path, Outlook.OlStoreType.olStoreDefault, "test");
Line stores.AddPstStore 抛出 System.Runtime.InteropServices.COMException (0x8000FFFF): Catastrophic failure 并在正确的位置创建大小为 265 KB 的 mystore.pst。新的存储/数据文件不会显示在 Outlook 中,并且不会在下次执行时出现在 RdoSession.Stores 中。所以我的程序尝试再次创建它(因为它没有找到它)然后同一行崩溃:
System.InvalidCastException: Error in IMsgServiceAdmin::AdminProviders: MAPI_E_INTERFACE_NOT_SUPPORTED
使用 office PIA 代码可以正常工作: https://msdn.microsoft.com/en-us/library/office/bb612380.aspx
我会保留兑换代码,因为它有更多的逻辑。我只是将这 5 行移到函数的开头以隔离问题。
【问题讨论】:
-
如果 Outlook 对象模型像魅力一样工作,为什么还需要使用 Redemption?
-
我在我的问题中回答了这个问题。我已经在 RDOStores 周围有大量代码,这就是我尝试使用它的原因。最后我将它重构为使用 OOM。
标签: outlook-addin outlook-redemption