c# - 从 WPF .Net Core 应用程序打开 Outlook 365 窗口
问题描述
这个问题已经被问了很多项目,但我无法找到合适的实际解决方案。
我正在使用 .Net Core 3.1 开发 WPF 应用程序,需要打开带有新电子邮件和附件的 Outlook(365、16.0.12827.20328)窗口。最简单的方法是使用互操作。
我的代码:
Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
MailItem oMsg = (MailItem)oApp.CreateItem(OlItemType.olMailItem);
oMsg.Subject = "subject";
oMsg.BodyFormat = OlBodyFormat.olFormatHTML;
oMsg.HTMLBody = "body";
oMsg.Attachments.Add("filepath", OlAttachmentType.olByValue, Type.Missing, Type.Missing);
为此,我需要互操作包。我尝试安装 nuget Microsoft.Office.Interop.Outlook并添加参考 COM -> Interop.Microsoft.Office.Interop.Outlook。
在这两种情况下,我都会收到错误: System.IO.FileNotFoundException:'无法加载文件或程序集'office,Version=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c'。该系统找不到指定的文件。'
我该怎么做才能解决问题?为什么我需要版本 15.0.0.0?Internet 说版本 15 适用于 Outlook 2013。
解决方案
通常,为了使 Outlook 自动化,您必须添加以下 COM 引用:
- Microsoft Office 类型库 - 用于常见的 MS Office 类型。
- Microsoft Office Outlook 类型库 - 适用于 Outlook 特定类型。
您可以尝试创建一个新的 .net 框架应用程序并添加这些 COM 引用。或者只是尝试创建一个新的 VSTO 加载项并观察添加的 COM 引用。
推荐阅读
- android - 使用 PUT 请求 volley 将文件上传到 AWS S3(在 Android 中)
- powershell - 在 Powershell 中按可用空间对驱动器进行排序
- postgresql - 您如何从 postgresql 获取 prometheus 指标?
- django - 如何从 django admin 调用外部 API 并显示数据,还想从 admin 对外部 API 进行 POST 调用
- html - CSS 选择 #shadow-root
- boto3 - AWS:如何使用 Boto3 从实例创建公共 AMI?
- java - 如何在 Vaadin 14 Web 应用程序中发生视图类实例化之前拦截检查授权的请求?
- javascript - 如何创建动态表单vuejs vuetify?
- java - FusionAuthClient 单例
- html - Adblock 会在我打开或关闭时更改我的段落位置