使用outlook api打开电子邮件时抛出错误

时间:2011-07-05 13:07:02

标签: c# office-interop outlook-2007 outlook-object-model

问题:使用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;

1 个答案:

答案 0 :(得分:0)

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

确定使用“as”运算符测试您感兴趣的接口,而不会引发异常。