如何访问“电子邮件列表”窗格中的MailItems?

时间:2014-12-22 13:43:29

标签: c# wpf outlook ms-office

我正在开发一个Outlook 2013插件,需要访问当前显示在电子邮件列表窗格中的电子邮件。

我已经搜索了很多,但我只能找到在当前所选文件夹中列出电子邮件的方法:

Outlook.MAPIFolder curFolder = this.Application.ActiveExplorer().CurrentFolder;
Outlook.Items mailItems = curFolder.Items;
MailItem item = mailItems.GetFirst();

如果用户没有应用任何搜索过滤器,这将正常工作;但如果通过即时搜索栏应用过滤器,则此代码将生成相同的MailItem列表,就像未应用过滤器一样。

我想到了两种可能解决这个问题的方法,但找不到任何可用的在线资源。 1)最好,直接读取当前在电子邮件列表窗格中呈现的MailItem列表。 2)或者,读取即时搜索文本框中的值,并使用Items.Find()命令将其应用于当前选定的文件夹。

任何指导或解释都将不胜感激;提前谢谢。

1 个答案:

答案 0 :(得分:0)

Outlook对象模型不提供对Outlook中显示的过滤器行或项目的任何直接访问。

但是Explorer类提供了CurrentView属性,该属性返回表示当前视图的对象。 View类提供应用于当前视图的Filter属性。

Sub ResetView()  
   Dim v as Outlook.View  
   ' Save a reference to the current view object  
   Set v = Application.ActiveExplorer.CurrentView  

   ' v.Filter
End Sub 

因此,您可以将过滤器应用于Items集合并获取相同的项目集。