[英]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.