使用outlook api打开电子邮件时引发错误

本文关键字:错误 电子邮件 outlook api 使用 | 更新日期: 2023-09-27 18:01:04

问题:打开看起来有效的邮件时收到以下错误消息。使用Outlook API打开邮件的MSG文件:

无法强制转换类型为的COM对象’系统__ComObject到接口类型"Microsoft.Office.Interop.Outlook.MailItem"。此操作失败,因为COM上的QueryInterface调用与IID接口的组件"{00063034-0000-0000-C000-000000000046}"由于以下错误而失败:否支持此类接口(异常来自HRESULT:0x80004002(E_NOINTERFACE((。

MSG文件在outlook中打开良好,我确信这些表单是标准的outlook邮件表单。

这个错误最可能的原因是什么?


背景:我的一位同事将exchange中的大量邮箱导出为PST,然后对PST文件运行一个工具,生成一个类似于原始邮箱的文件结构,其中填充了.MSG文件。例如:

''用户名
''用户名''收件箱
''用户名''发送
''用户名''草稿
''用户名''已删除

然后,我扫描这些文件夹中的.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;

使用outlook api打开电子邮件时引发错误

OOM中的所有*Item对象都实现Type属性。使用反射动态检索该属性,而不是将返回的对象强制转换为MailItem。

OK,使用"as"操作符测试您感兴趣的接口,而不会引发异常。