Model view controller Can';我的MVC4项目中没有Outlook.Application interop工作

Model view controller Can';我的MVC4项目中没有Outlook.Application interop工作,model-view-controller,outlook-addin,Model View Controller,Outlook Addin,我一直试图在我的MVC4项目中使用这种互操作。我试着使它简单化,只是为了得到这个想法。但我得到一个错误“检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:被调用方拒绝了80010001调用。(来自HRESULT的异常:0x80010001(RPC_E_Call_rejected))。” 以下是我的简单代码: using Outlook = Microsoft.Office.Interop.Outlook

我一直试图在我的MVC4项目中使用这种互操作。我试着使它简单化,只是为了得到这个想法。但我得到一个错误“检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:被调用方拒绝了80010001调用。(来自HRESULT的异常:0x80010001(RPC_E_Call_rejected))。”

以下是我的简单代码:

    using Outlook = Microsoft.Office.Interop.Outlook;
    [HttpPost]        
    public ActionResult SendEmail(SendEmailModel model)
    {
        if (ModelState.IsValid)
        {
            Outlook.Application app = new Outlook.Application();
            Outlook.NameSpace ns = app.GetNamespace("MAPI");
            ns.Logon("", "", Missing.Value, Missing.Value);


            Outlook.MailItem mailItem = (Outlook.MailItem)app.CreateItem(Outlook.OlItemType.olMailItem);

            mailItem.To = model.To;
            mailItem.Subject = model.Subject;
            mailItem.Body = model.Message;

            ((Outlook.MailItem)mailItem).Send();

            app = null;
            ns = null;

            return RedirectToAction("Index", "TechFile");
        }
        return View(model);
    }

无论如何,我发现Outlook redemption是一种替代方法。但是我不知道该怎么开始。我按照这个解决了这个问题

此外,我建议您阅读以下文章:

Microsoft目前不建议也不支持从任何无人参与、非交互的客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为Office在此环境中运行时可能会表现出不稳定的行为和/或死锁。


如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用安全的组件来无人值守地执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果使用服务器端解决方案中的Office应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您的整体解决方案的稳定性也会带来风险。

+1感谢您给我这个!我会记住这一点,我不认为我的情况是自动的。只是想使用现有电子邮件触发电子邮件发送,而不是创建另一个。您已将问题标记为“outlook addin”。您的代码是否在COM Outlook插件中运行?Hi@DmitryStreblechenko。对不起,我弄糊涂了。它应该在我的web应用程序中连接Outlook。如何移除标签?对这个社区来说还是新鲜事。很抱歉给您带来不便。