【问题标题】:Catastrophic failure followed by MAPI_E_INTERFACE_NOT_SUPPORTED when trying to AddPstStore尝试 AddPstStore 时发生灾难性故障,随后是 MAPI_E_INTERFACE_NOT_SUPPORTED
【发布时间】: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


【解决方案1】:

MAPI 在配置文件管理界面中存在一些编组错误(例如 IMsgServiceAdmin)。

尝试用调用RDOSession.Logon 替换设置RDOSession.MAPIOBJECT 属性。

您的代码是在 Outlook 插件还是独立应用程序中运行?

【讨论】:

  • 谢谢德米特里。它是一个插件。我重构了代码以使用 Outlook 对象模型。我确实使用 RDOStore 重命名了 store,它可以正常工作。我在玩的时候注意到了一件事:RDOPstStore.PstPath 也失败了,并出现了类似的错误消息。我将尝试在早上使用登录而不是设置 MAPI 对象,看看它是否有效。应该需要一些时间来检查。
  • 如果是 COM 插件,设置 RDOSession.MAPIOBJECT 应该没问题,只要 yoru 代码在主线程上运行。配置文件接口不喜欢辅助线程。
猜你喜欢
  • 1970-01-01
  • 2010-12-04
  • 2016-03-21
  • 1970-01-01
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
相关资源
最近更新 更多