在Outlook上下文菜单操作中读取“活动”邮件消息?

时间:2012-05-03 05:32:05

标签: c# visual-studio-2010 outlook outlook-addin mapi

您好我正在尝试在Outlook中点击自定义按钮阅读电子邮件内容。 即:右键单击邮件,然后在选定的邮件上单击自定义按钮 GoToApp 它应该读取邮件的所有内容,包括文本,附件信息和纯文本和图像 我附上了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

2 个答案:

答案 0 :(得分:1)

ItemContextMenuDisplay事件中(在右键单击时触发),有一个Outlook.Selection对象作为第二个参数传入。

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

无法确定执行右键单击的确切项目(可能选择了多个项目,或者可能选择了 no 项目),但是右键单击的项目在作为所选项目之一时执行。此外,当前位于阅读窗格中的项目可能对应于所选项目。

快乐的编码。

答案 1 :(得分: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);
        }
    }