问题:使用Outlook API打开看似有效的.MSG文件打开电子邮件时出现以下错误消息:
无法转换类型的COM对象 'System .__ ComObject'到接口类型 'Microsoft.Office.Interop.Outlook.MailItem'。 此操作失败,因为 QueryInterface调用COM 与IID接口的组件 '{00063034-0000-0000-C000-000000000046}' 由于以下错误而失败:否 支持这样的接口(例外 来自HRESULT:0x80004002 (E_NOINTERFACE))。
MSG文件在outlook中打开很好,我保证这些表单是标准的Outlook邮件表单。
导致此错误的最可能原因是什么?
后台:我的一位同事已将来自Exchange的大量邮箱导出为PST,然后针对PST文件运行工具,以生成类似于填充.MSG的原始邮箱的文件结构。文件。例如:
\ USERNAME
\用户名\ INBOX
\用户名\ SENT
\用户名\汇票
\ USERNAME \ DELETED
然后我扫描这些文件夹以查找.MSG文件并尝试使用Outlook API打开它们。
Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");
Outlook.MailItem item = (Outlook.MailItem)ns.OpenSharedItem(EmailPath);
Subject = item.Subject;
答案 0 :(得分:0)
OOM中的所有* Item对象都实现了Type属性。使用反射动态检索该属性,而不是将返回的对象强制转换为MailItem。
确定使用“as”运算符测试您感兴趣的接口,而不会引发异常。