为什么我从Office的Outlook库中收到例外?

时间:2012-10-12 14:18:49

标签: c# outlook office-interop

我有一个叫

的应用程序
Email hello = new Email(appropriate constructor);
hello.Email_Send();

我收到了例外:

  

检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂由于以下错误而失败:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_SERVER_EXEC_FAILURE))。

来自System.Runtime.InteropServices.COMException

using O = Microsoft.Office.Interop.Outlook;    
class Email
{
    public void Email_Send()
    {
        O.Application outlook = new O.Application(); //Exception thrown here.
        O.MailItem message = outlook.CreateItem(O.OlItemType.olMailItem);
        message.To = Receiver;
        message.CC = Sender;
        message.Subject = Subject;
        message.Body = "This is an automated message sent at " + DateTime.Now.ToString("HH:mm:ss") + " about " + Body_Topic + System.Environment.NewLine + Body_Content ;
        message.Send();
    }
}

此错误以前从未发生过,并且我所知道的代码没有任何变化。 http://support.microsoft.com/kb/825118似乎不符合我的症状 - 我的电脑没有停止响应等。 任何诊断问题的帮助都将不胜感激!

3 个答案:

答案 0 :(得分:69)

此错误是由visual studio以管理员身份运行引起的。 Outlook不允许单独的用户访问同一个邮箱(我在桌面上打开了outlook应用程序)。即使我有本地管理员访问w /我的域用户,运行VS作为管理员必须将该进程关联到另一个用户对象?不完全确定这是如何工作的,但......已解决。

答案 1 :(得分:3)

我遇到了同样的问题,如前所述:如果Visual Studio以管理员身份运行,则Outlook会阻止另一个具有不同用户的实例。我的VS解决方案正在启动多个项目,我需要它以管理员身份运行,所以我所做的是在调试时以管理员身份运行Outlook。这解决了我的问题。

答案 2 :(得分:0)

发布其中一条评论作为答案。

<块引用>

当我们关闭正在运行的 Outlook 实例时,它就像一个魅力。

在我的情况下,我在带有特殊安全软件的虚拟机下运行。在我的开发人员桌面上,当 Outlook 打开时它运行良好。

但在我的安全虚拟机中,我必须关闭 Outlook 才能使其正常工作。这可能是由于我们的安全软件造成的。

当 Outlook 保持运行时:Unhandled Exception: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

当它不运行时,它工作正常。