如何在C#中运行Outlook时连接到Outlook? [英] How to connect to outlook while its running in c#?

查看:48
本文介绍了如何在C#中运行Outlook时连接到Outlook?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要做的是添加一封"电子邮件到."按钮连接到WinForm客户端,该客户端打开一个新的Outlook邮件窗口并附加一个文件,以便用户可以转发该文件。如果Outlook尚未运行,我可以让Outlook集成正常工作。这是一个C#.NET4.0WinForms应用程序,使用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-C000-000000000046} 由于以下错误而失败: 80080005服务器执行失败 (HRESULT异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。

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

推荐答案

这是由于进程的权限所致。我通常以管理员身份运行Visual studio,但如果以前没有以管理员身份启动Outlook,则COM调用将失败。

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

这篇关于如何在C#中运行Outlook时连接到Outlook?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆