由于outlook界面无法打开mailItem ..!

时间:2015-06-15 09:53:32

标签: c# outlook office-interop office-2013

我有一个应用程序,我使用Outlook互操作创建一个mailItem。 在某些系统上,代码可以正常运行。

但是在其中一个系统上会出现此错误:

  

Message =无法转换类型的COM对象       'Microsoft.Office.Interop.Outlook.ApplicationClass'到接口类型       'Microsoft.Office.Interop.Outlook._Application'。此操作失败,因为       用于IID接口的COM组件的QueryInterface调用       '{00063001-0000-0000-C000-000000000046}'失败

     

由于以下错误:接口未注册

我认为它与寄存器有关,请参阅:Answer on Error accesing COM components

但我需要在代码中解决这个问题,因为我无法访问具有此类问题的所有系统。

using Outlook = Microsoft.Office.Interop.Outlook;

//Create email body with the customers
string mailBody = customers;
//Create the email with the settings
Outlook.Application outlookApp = new Outlook.Application();
Outlook.MailItem mailItem = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.Subject = mailSubject;
mailItem.Attachments.Add(totalPath);
mailItem.Body = mailBody;
mailItem.Importance = Outlook.OlImportance.olImportanceNormal;
try
{
    //Try to open outlook, set message if its not possible to open outlook
    mailItem.Display(true);
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
    return false;
}

我如何在我的代码中解决这个问题?

P.S。每个系统都使用Office 2013版本!

1 个答案:

答案 0 :(得分:1)

尝试使用以下代码:

 oApp = Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application")) as Microsoft.Office.Interop.Outlook.Application;

看起来Windows注册表记录有问题。看看类似的论坛帖子 - Error: Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' to interface type 'Microsoft.Office.Interop.Outlook._Application'.

您是否在PC上安装了Click2Run版Office?有关详细信息,请参阅How to: Verify Whether Outlook Is a Click-to-Run Application on a Computer