Я пытаюсь использовать EWS 2010 Managed API для получения общего размера почтового ящика пользователя. Я не нашел метод веб-службы для получения этих данных, поэтому я решил, что попытаюсь рассчитать их. На другом сайте я нашел один, казалось бы, применимый вопрос о поиске размеров почтовых ящиков с EWS 2007 , но либо я не понимаю, что он просит меня сделать, либо этот метод просто не работает с EWS 2010.
Обдумывая понимание кода, я смог написать, как мне показалось, метод, который рекурсивно пересекает структуру папок и приводит к объединенному итогу для всех папок внутри папки «Входящие»:
private int traverseChildFoldersForSize(Folder f)
{
int folderSizeSum = 0;
if (f.ChildFolderCount > 0)
{
foreach (Folder c in f.FindFolders(new FolderView(10000)))
{
folderSizeSum += traverseChildFoldersForSize(c);
}
}
folderSizeSum += (int)f.ManagedFolderInformation.FolderSize;
return folderSizeSum;
}
(Предполагается, что в данной папке не более 10 000 папок. Рисунок, это безопасная ставка ...)
К сожалению, это не работает.
Я инициирую рекурсию с этим кодом:
Folder root = Folder.Bind(svc, WellKnownFolderName.Inbox);
int totalSize = traverseChildFoldersForSize(root);
Но выдается исключение Null Reference, по сути говоря, [folder].ManagedFolderInformation
является ссылкой на NULL.
Для ясности я также попытался просто получить размер корневой папки:
Console.Write(root.ManagedFolderInformation.FolderSize.ToString());
Это вызвало то же исключение NRE, поэтому я знаю, что не только после того, как вы достигнете определенной глубины в дереве каталогов, ManagedFolderInformation не существует.
Есть идеи, как получить общий размер почтового ящика пользователя? Я лаю не на том дереве?