如何在C#的Outlook 365桌面应用程序中启动新的电子邮件对话框?

问题描述

我的搜索功能很弱,我正在寻找一种在Outlook 365中打开一个新电子邮件对话框的方法,该对话框预先填充了主题,HTML内容,附件和联系人(收件人,发件人等)。 )。我希望能够打开代码中的对话框,等待用户单击“发送”或关闭窗口,并检测他们是否实际发送了电子邮件关闭了窗口。我曾经能够使用Outlook 2013 Interop来做到这一点,但是对于我一生来说,我似乎找不到任何可以使用的“ Outlook 365 Interop”。

为澄清起见,我不想只是给他们发送电子邮件,我想为他们打开一个预先填充了电子邮件的窗口,并检测他们是否选择在Outlook桌面中发送邮件电子邮件客户端。

这在当今时代如何实现?

解决方法

您可以创建一个Outlook VSTO Addin并将其集成回您的主应用程序。如果在受控环境中,则可以将外接程序部署到办公室中的所有用户。如果需要,您还可以创建Outlook Web加载项。

,

我最终为自己找到了答案。我使用VoidTools的应用程序Everything来查找最新版本的Outlook PIA的位置:

Everything App Outlook PIA Location

然后我将其作为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从这里开始工作,但是弄清楚如何使它正常工作真是一件痛苦的事!我不知道为什么Microsoft似乎在“隐藏”此Interop及其在其网站上的所有引用!

尽管我的问题由于某种原因而被否决,但我不会删除它,因为其他人可能也会遇到相同的问题。如果我忘记了,将来​​可能需要再次提及。确实可以在Outlook 365桌面应用程序上工作!