我正在使用Outlook Redemption library。
我正在尝试检索Outlook存储的文件夹列表。我只需要满足某些条件的文件夹,并且只需要它们的name和DefaultMessageClass。
使用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,则将打开整个文件夹对象,并且不会有太大的性能提升。
哪些属性不起作用?您收到特定错误吗?
您的完整SELECT语句是什么?为避免打开文件夹的机会,请使用RDOFolders.MAPITable.ExecSQL
-它会返回ADODB.Recordset
对象。