Outlook-Addin:使用Exchange-Online时如何快速检索文件夹树

问题描述 投票:0回答:1

我正在使用Outlook Redemption library

我正在尝试检索Outlook存储的文件夹列表。我只需要满足某些条件的文件夹,并且只需要它们的nameDefaultMessageClass

使用Exchange帐户缓存时,RDOFolder对象的迭代非常慢。

所以我玩弄了GetAllChildFolders()并将其结合到RODFolderItems find方法中。

http://www.dimastr.com/redemption/RDOFolders.htm

var allFolder = ((RDOFolder2)rootFolder).GetAllChildFolders();

string folderSelect = "SELECT Name, EntryId, DefaultMessageClass FROM  FOLDER WHERE \"http://schemas.microsoft.com/mapi/proptag/0x3613001F\" like '%Note%'";

try
{
RDOFolder vFolder = vFolders.Find(folderSelect);


  while (vFolder != null)
  {
    System.Diagnostics.Debug.WriteLine(vFolder.Name);
    System.Diagnostics.Debug.WriteLine(vFolder.EntryID);
    System.Diagnostics.Debug.WriteLine(vFolder.DefaultMessageClass);

    vFolder = vFolders.FindNext();

   }
}
catch (Exception ex)
{
    //log error here!
}

现在我有两个问题!

1。 SQL语法

来自find方法的文件

SQL查询中指定的属性必须使用Outlook对象模型(或RDO)属性名称(例如,主题,Email1Address)

我无法使Outlook或Redemption属性在SQL语句中工作。有没有一个有效的例子?

2。性能访问属性

在线文档指出以下内容。

包括SELECT子句允许Redemption预取文件夹层次结构表中的属性,而无需打开项目从而显着提高了性能(请参见示例“ 我希望有一个:-)”)。如果你以后访问SELECT子句“赎回”中未指定的属性将打开该项目。

我如何从文件夹层次结构访问属性预取?如果我使用RDOFolder.Name,则将打开整个文件夹对象,并且不会有太大的性能提升。

outlook-addin outlook-redemption
1个回答
0
投票
  1. 哪些属性不起作用?您收到特定错误吗?

  2. 您的完整SELECT语句是什么?为避免打开文件夹的机会,请使用RDOFolders.MAPITable.ExecSQL-它会返回ADODB.Recordset对象。

© www.soinside.com 2019 - 2024. All rights reserved.