【问题标题】:How to connect to outlook while its running in c#?如何在 C# 中运行时连接到 Outlook?
【发布时间】:2011-09-21 06:39:53
【问题描述】:

我想要做的是将“电子邮件至...”按钮添加到打开一个新的 Outlook 邮件窗口并附加一个文件以便用户可以转发它的 winform 客户端。如果 Outlook 尚未运行,我可以让 Outlook 集成正常工作。这是一个 C# .NET 4.0 winforms 应用程序,使用 Outlook 14.0 互操作库,针对在 Windows 7 64 位计算机上运行的 Outlook 2010 32 位。由于其他原因,我已经将应用程序编译为 x86,所以我怀疑它是 32/64 位问题。这是我的代码:

// Connect to outlook and create a new mail item
var app = new Outlook.Application();
var ns = app.GetNamespace("MAPI");
var mailItem = (Outlook.MailItem)ns.Application.CreateItem(Outlook.OlItemType.olMailItem);

// create the mail item and attach the file
mailItem.To = "";
mailItem.Subject = "Emailing: " + Path.GetFileName(_currentFilePath);
mailItem.Attachments.Add(_currentFilePath, Outlook.OlAttachmentType.olEmbeddeditem);

// show the email dialog window
mailItem.Display(true);

如果 Outlook 没有运行,它可以完美运行。打开后,我在尝试创建 Outlook.Application 对象的第一行出现以下错误:

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

有什么想法会导致这种情况吗?这是某种版本冲突吗?

【问题讨论】:

  • 你应该接受 Jahmics 的回答,它是正确的。

标签: email outlook ms-office office-interop outlook-object-model


【解决方案1】:

这是由于进程的特权。我通常以管理员身份运行 Visual Studio,但如果之前未以管理员身份启动 Outlook,COM 调用将失败。

简单的解决方案。 以管理员身份运行或以普通权限级别运行。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。这是一个安全问题。当您以管理员身份运行 Outlook 时(Shift 右键单击​​)。问题不再存在。禁用用户帐户控制设置可能会解决它。

    【讨论】:

      猜你喜欢
      • 2013-02-20
      • 1970-01-01
      • 2021-12-08
      • 2016-12-19
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      相关资源
      最近更新 更多