c# - 如何在 C# 中的 Outlook 365 桌面应用程序中启动新的电子邮件对话框?
问题描述
我正在寻找一种方法来在 Outlook 365 中打开一个新的电子邮件对话框,该对话框预先填充了主题、HTML 内容、附件和联系人(收件人、发件人等)。我希望能够在代码中打开对话框,等待用户单击发送或关闭窗口,并检测他们是否真的发送了电子邮件,或者关闭了窗口。我以前可以使用 Outlook 2013 Interop 来做到这一点,但在我的一生中,我似乎无法在任何地方找到可以使用的“Outlook 365 Interop”。
澄清一下,我不想只为他们发送电子邮件,我想为他们打开预先填充的窗口,并检测他们是否选择在 Outlook 桌面电子邮件中发送消息客户。
是否有适用于 Outlook 365 产品的 Interop,如果有,我在哪里可以找到它?因为我在任何地方都找不到对 Outlook 365 Interop 的引用。
解决方案
我最终为自己找到了答案。我使用 VoidTools 的应用 Everything 来查找最新版 Outlook PIA 的位置:
我手动将它作为 COM 程序集引用添加到我的应用程序中。就我而言,它位于“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Outlook.dll”。然后我必须执行以下操作:
Microsoft.Office.Interop.Outlook.Application outlookApp =
(Microsoft.Office.Interop.Outlook.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application"));
Microsoft.Office.Interop.Outlook.MailItem mailItem = outlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
mailItem.Display(true);
现在它正在工作!我可以使用我习惯的旧 Outlook Interop 从这里开始工作,但是弄清楚如何让它工作很痛苦!我不知道为什么微软似乎在“隐藏”这个 Interop 以及他们网站上对它的任何引用!
尽管由于某种原因我的问题被否决了,但我不会删除它,因为其他人可能会遇到同样的问题。如果我忘记了,我将来可能需要再次参考这个。这确实适用于 Outlook 365 桌面应用程序!
推荐阅读
- scala - 带有 webSocketClientFlow 的空流
- mysql - MySQL 从 2 个连接的表中选择最低价格
- c# - 将 wsa 标头添加到 SOAP 调用
- excel - 如果 MAX 为 TRUE,则 Excel 中的输出值
- ios - UITextField 文本内容在成为第一响应者时向右移动
- javascript - 在 vue 中使用复选框作为数据绑定
- android - TextInputLayout 的布局膨胀缓慢
- android - 扩展持久性底页时调整回收站视图高度
- javascript - WebdriverIO中如何获取选择器指向的元素的索引
- css - 如何改进此@keyframes 动画并使其更流畅