2

嗨,我正在尝试通过单击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;
}

有点不起作用,因为默认文件夹位置中没有邮件。

我怎么能做到这一点,请帮忙。 在此处输入图像描述

谢谢尼基尔

4

2 回答 2

1

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

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

无法确定执行右键单击的确切项目(可能选择了多个项目或可能没有选择任何项目),但执行右键单击的项目是选定项目之一. 此外,当前阅读窗格中的项目可能与所选项目对应。

快乐编码。

于 2012-05-03T05:48:26.040 回答
1

这是 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);
        }
    }
于 2017-07-29T16:13:36.003 回答