繁体   English   中英

从打开的窗口中的C#VSTO Outlook电子邮件正文

[英]c# VSTO Outlook email body from opened window

我的VSTO Outlook应用程序出现问题。 我要处理选定电子邮件中的电子邮件正文。 对于不在“默认”列表中的选定电子邮件,此代码可以正常工作:

Object selItem = Globals.ThisAddIn.Application.ActiveExplorer().Selection[1];
        Outlook.MailItem mailItem = (Outlook.MailItem)selItem;
        return mailItem.Body;

但是,如果用户双击打开列表中的电子邮件,则该电子邮件将显示在新窗口中。 如果在此窗口(功能区上方)执行插件,则仍使用列表中的电子邮件(现在位于后台)。

有没有办法找出该插件是否在单独的窗口中启动,然后从中获取电子邮件正文?

问候,弗洛里安

当您双击电子邮件项目时,将打开一个检查器窗口,您可以使用Application.ActiveInspector()方法来访问它。 Inspector对象具有CurrentItem属性, CurrentItem属性表示打开的项目。 另外,应避免在表达式中使用多个点,并适当释放COM对象。

碰巧的是,我只是处理了类似的事情。 我的情况不尽相同,但是由于我可以轻松地拼凑出您正在寻找的外观,请参见下文。 我尚未对此进行测试,显然您必须处理将正确的引用传递给Outlook应用程序的问题,但是由于我可以立即获得此引用,所以我认为它将通过它,并希望对您有所帮助。

        private static void ribbonButton_Click(object sender, RibbonControlEventArgs e)
    {
        Outlook.Application application = new Outlook.Application();
        Outlook.Inspector inspector = application.ActiveInspector();

        if (application.ActiveExplorer().Selection[1] is Outlook.MailItem explorerMailItem)
        {
            // Write code to handle message if sourced from explorer (i.e., Reading Pane)
        }
        else if (inspector.CurrentItem is Outlook.MailItem inspectorMailItem)
        {
            // Write code to hanlde message if sourced from inspector 
            // (i.e., openened (double-clicked) message
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM