我正在使用c#开发Outlook 2013插件。作为要求的一部分,我需要枚举所有可见文件夹。以下是我正在使用的示例代码。
public List<Outlook.Folder> EnumerateFolders(Outlook.Folder parentFolder)
{
List<Outlook.Folder> allFolders = new List<Outlook.Folder>();
EnumerateFolders(parentFolder, allFolders);
return allFolders;
}
public void EnumerateFolders(Outlook.Folder parentFolder, List<Outlook.Folder> allFolders)
{
Outlook.Folders childFolders = parentFolder.Folders;
if (childFolders.Count > 0)
{
foreach (Outlook.Folder childFolder in childFolders)
{
try
{
bool isHidden = childFolder.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10F4000B");
if (!isHidden)
{
allFolders.Add(childFolder);
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
// Call EnumerateFolders using childFolder.
EnumerateFolders(childFolder, allFolders);
}
}
}
我在这里遇到的问题是,如果我在根文件夹下创建一个新文件夹并执行上面的代码我收到错误&#34;找不到MAPI属性0x10F4000B&#34;。 0x10F4000B用于PT_ATTR_HIDDEN。
如果我使用OWA创建新文件夹,则此属性可用。仅当我在Outlook 2013中创建文件夹时,它才可用。
有人可以帮我理解这里的问题。 提前谢谢。
答案 0 :(得分:3)
您不能指望任何MAPI属性可用。只是OWA将该属性设置为false。 Outlook只关心属性是否属实。如果该属性丢失,则假定必须显示该文件夹(PR_ATTR_HIDDEN = false)。