我一直试图在我的MVC 4项目中使用这个互操作。我试图让它变得简单只是为了得到这个想法。但是我得到一个错误"由于以下错误,检索CLSID为{0006F03A-0000-0000-C000-000000000046}的组件的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兑换是另一种方式。但我不知道如何开始。
答案 0 :(得分:1)
我通过以下方式解决了这个问题。 http://support.microsoft.com/kb/329854
答案 1 :(得分:0)
另外,我建议您阅读Considerations for server-side Automation of Office文章,其中说明了以下内容:
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office在此环境中运行Office时,可能会出现不稳定的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。