2012-05-03 13 views
2

嗨,我想在Outlook中点击自定义按钮来阅读电子邮件内容。 即:右键单击邮件,并在选定的邮件点击自定义按钮GoToApp 它应该阅读邮件的所有内容,包括文本,附件信息和纯文本和图像 我附加了Outlook页面的快照。阅读Outlook上下文菜单操作中的“活动”邮件消息?

我试图

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.ApplicationClass(); 
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); 
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders‌​.olFolderInbox); 
if (myInbox.Items.Count > 0) { 
    // Grab the Subject 
    lblSubject.Text = ((Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items[1]).Subject; 
} 

位它不工作是cosidering邮件是不存在的默认文件夹位置。

我该如何做到这一点,请大家帮忙。 enter image description here

感谢 NIKHIL

+0

我试图 Microsoft.Office.Interop.Outlook.Application对myApp =新Microsoft.Office.Interop.Outlook.ApplicationClass(); Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace(“MAPI”); Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox); 如果(myInbox.Items.Count> 0){ // 抓住主题 lblSubject.Text =((Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items [1])除。 } – zytham

+0

它不工作它是cosidering邮件不存在于默认文件夹位置。 – zytham

回答

1

ItemContextMenuDisplay事件(即在右键单击射击)有传递作为第二个参数的Outlook.Selection对象。

使用此选项可确定当前选定/活动项目(如果有)。对象需要根据情况转换为MailItem。 (请记住,Outlook对象模型中的索引从1开始,而不是0)。

无法确定是否执行右键单击的确切项目(可能会选择多个项目或可能存在多个项目项目被选中),但在上执行右键单击的项目将是是所选项目之一。另外,当前在阅读窗格中的项目可能对应于选定的项目,而不是,而不是

快乐编码。

+0

感谢您的回复,但我能够弄清楚如何实现可以有相同的代码片段..这将使一些清楚.. – zytham

+0

阅读文档,并尝试一些事情。然后,如果有关于*特定*问题的*特定*问题,请发表一个专注于此的问题。 – 2012-05-03 08:14:01

+0

嗨,我使用“currentExplorer = this.Application.ActiveExplorer();”那么我可以得到所有的邮件的详细信息,但在我的自定义按钮点击我不能解决它。 – zytham

0

这是MailItem上下文菜单中自定义功能区按钮的功能区回调。

public void BtnClickHandler(Office.IRibbonControl btn) 
    { 
     var ex = btn?.Context?.Parent as Outlook.Explorer; 

     if (ex == null) return; 

     foreach (var sel in ex.Selection) 
     { 
      var mailItem = sel as Outlook.MailItem; 
      if (mailItem != null) DoSomethingWith(mailItem); 
     } 
    } 
相关问题