簡體   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