Outlook Exception没有意义

时间:2014-05-09 12:32:48

标签: c# outlook interop office-interop

使用Outlook 2010,我在调试时遇到此错误

  

无法转换类型的COM对象   'Microsoft.Office.Interop.Outlook.ApplicationClass'到接口类型   'Microsoft.Office.Interop.Outlook._Application'。此操作失败   因为QueryInterface调用COM组件

    public void sendEMailThroughOUTLOOK()
    {
        try
        {
            String address = "john.doe@contoso.com";

            Outlook.Application oApp = new Outlook.Application();
            Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); // CRASHING HERE
            oMailItem.To = address;

            oMailItem.Subject = "Status Update on " + DateTime.Now.ToString("M/d/yyyy");

            oMailItem.BodyFormat = Outlook.OlBodyFormat.olFormatPlain;                

            oMailItem.Body = createEmailBody();
            // body, bcc etc...
            oMailItem.Display(true);
        }//end of try block
        catch (Exception ex)
        {
            Console.WriteLine(ex.InnerException.ToString());
        }//end of catch
    }

此代码在Outlook 2013上完美运行。但是在使用Outlook 2010时它仍然崩溃。

我将Interop.Outlook的评分从15降至14

1 个答案:

答案 0 :(得分:1)

我认为你需要替换它:

Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

用这个:

Outlook.MailItem oMailItem = oApp.CreateItem(Outlook.OlItemType.olMailItem);

此外,如果此代码在加载项中,则您不需要创建Outlook.Application的新实例 - 使用传递给OnConnection事件的对象。