Outlook Interop:如何迭代文件夹中的所有项目

时间:2008-11-14 14:57:25

标签: c# com interop outlook ms-office

我想搜索所有Outlook项目的正文。我知道如何为四个PIM项(Notes / Tasks / Appointments / Contacts)执行此操作。但是除了将COM对象转换为特定的项类型(即ContactItem,AppointmentItem等)之外,所有这些代码都是相同的。这些PIM项是否有父类,因此我可以在循环中执行类似的操作:


using Outlook = Microsoft.Office.Interop.Outlook

List SearchFolderItems( Outlook.Folder folder )
{
   List results = new List();
   foreach( object folderItem in folder.Items )
   {
      //GenericPIMItem is what I am wishing for
      Outlook.GenericPIMItem item  = (Outlook.GenericPIMItem)folderItem;
      if( item.Body.ToLower().Contains( "secret sauce" ) )
      {
         results.Add( item.Name );
      }
   }
}


Body是我想要获得的四个PIM项的公共属性。有这样的父项吗?如果不是,似乎API设计不佳?我想我可以抽象出文件夹项,让它看起来像是有一个父项......我也尝试用反射做这个,但是不能完全实现。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

查看文档,我没有看到你想要的课程。

对于Outlook 2007,可以在Items集合中的对象列表为here。它包括诸如没有正文的分发列表之类的东西,这使得你不想要的东西。

答案 1 :(得分:0)

虽然PIM项可能来自公共类,但它不能通过com对象创建,但是,所有items也返回class属性,这是一个枚举类型的这是项目。在投射之前,您可以检查此属性以获取所需的四种类型的项目,