【发布时间】:2018-05-28 09:29:33
【问题描述】:
我想在不注册 COM dll (regsvr32) 的情况下使用邮件功能。 我遵循了以下信息:
http://www.dimastr.com/redemption/security.htm#redemptionloader
所以我用
初始化dllprivate Redemption.SafeMailItem safeMail = Redemption.RedemptionLoader.new_SafeMailItem();
显示 Eval-Popup。都好。 但是当我将 Outlook 邮件项分配给对象时
safeMail.Item = mail; // of type Microsoft.Office.Interop.Outlook.MailItem
然后出现这个异常:
无法将“System.__ComObject”类型的 COM 对象转换为接口 键入“Redemption.ISafeMailItem”。此操作失败,因为 对具有 IID 的接口的 COM 组件上的 QueryInterface 调用 “{0A95BE2D-1543-46BE-AD6D-18653034BF87}”由于以下原因而失败 错误:不支持此类接口(HRESULT 异常:0x80004002 (E_NOINTERFACE))。
使用 regsvr32 注册 dll 后它可以工作吗?但我不想那样。
我做错了什么?
编辑:
- 我试过在开发机器上注册 COM
- 删除 COM 并使用 Interop.Redemption.dll
在不注册 COM 的情况下使用 Loader 的预期方式是什么?
【问题讨论】:
-
你在使用多线程吗?如果在注册表中找不到类型信息,.Net 运行时会遇到编组问题。
标签: c# outlook-addin mapi outlook-redemption