当我遍历所有Outlook文件夹(在C#加载项中)时,我看到的文件夹名称如下:
这些文件夹在Outlook中不可见。我喜欢检查我的代码是否可见文件夹但我找不到隐藏或可见的属性。
MAPIFolder文件夹具有以下属性:
但没有隐藏。
如果文件夹被隐藏,我怎样才能在我的c#加载项中找到?
答案 0 :(得分:2)
您需要阅读PR_ATTR_HIDDEN
MAPI属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x10F4000B
)。您可以使用MAPIFolder.PropertyAccessor.GetProperty
阅读它。
您可以使用OutlookSpy(单击IMAPIFolder按钮)查看该(和其他)属性
答案 1 :(得分:0)
至少在我的机器上,我从未检索过所有文件夹的 PR_ATTR_HIDDEN 值。虽然在 OutlookSpy 中隐藏文件夹的值为 true,但我找不到原因。
代码:
var rootFolder = outlook.Session.DefaultStore.GetRootFolder();
foreach (Folder folder in rootFolder.Folders)
{
try
{
bool isHidden = folder.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10F4000B");
// never reach this line
}
catch (System.Exception ex)
{
// always exception: value is not available
}
}
我的解决方法:如果您想检索 Outlook 中显示的文件夹,您可以使用 PR_CONTAINER_CLASS_W 并将其与 IPF.Note 或 IPF.Imap 进行比较。
示例:
const string PR_CONTAINER_CLASS_W = "http://schemas.microsoft.com/mapi/proptag/0x3613001F";
string containerClass = folder.PropertyAccessor.GetProperty(PR_CONTAINER_CLASS_W);
bool isVisible = string.Equals(containerClass, "IPF.Note")|| string.Equals(containerClass, "IPF.Imap");