我正在尝试检索 HiddenItem 而不必迭代 HiddenItem 集合。
不幸的是,我最终遍历了集合并检查每个项目的MessageClass以获得我想要的消息。
internal class Program
{
private static RDOSession rdoSession;
private static readonly string DASL = "http://schemas.microsoft.com/mapi/proptag/0x7C080102";
static void Main(string[] args)
{
rdoSession = RedemptionLoader.new_RDOSession();
rdoSession.Logon();
try
{
RDOFolder inbox = rdoSession.GetDefaultFolder(rdoDefaultFolders.olFolderInbox);
RDOItems hiddenItems = inbox.HiddenItems;
// This line throws "System.ArgumentException
//{"Unknown property name: sql"}
RDOMail mail = hiddenItems.Find("@SQL=\"http://schemas.microsoft.com/mapi/proptag/0x001A001E\"");
int rowCount = hiddenItems.Count;
for (int i = 1; i < rowCount; i++)
{
RDOMail mailItem = hiddenItems[i];
if (mailItem.MessageClass == "IPM.Configuration.ExtensionMasterTable")
{
object [] p = hiddenItems[i].Fields[DASL];
int len = p.Length;
byte[] data = new byte[len];
for( int index=0; index < len; index++ )
{
data[index] = (byte)p[index];
}
string result = System.Text.Encoding.UTF8.GetString(data);
}
}
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine(e);
}
finally
{
rdoSession.Logoff();
}
}
}
使用类似的查询
RDOMail mail = hiddenItems.Find("\"http://schemas.microsoft.com/mapi/proptag/0x001A001E\" = 'IPM.Configuration.ExtensionMasterTable' ");
或
RDOMail mail = hiddenItems.Find("MessageClass = 'IPM.Configuration.ExtensionMasterTable' ");