Я пытаюсь использовать Управляемый API 2010 года EWS для получения общего размера почтового ящика пользователя. Я не нашел, что метод веб-сервиса получает эти данные, таким образом, я полагал, что попытаюсь вычислить их. Я нашел один по-видимому применимый вопрос на другом сайте о нахождении размеров почтового ящика с 2007 EWS, но или я не понимаю то, что это просит, чтобы я сделал, или тот метод просто не работает с 2010 EWS.
Noodling вокруг в понимании кода, я смог записать то, что я думал, был метод, который пересечет структуру папок рекурсивно и приведет к объединенному общему количеству для всех папок в Ящике входящих сообщений:
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);
Но Исключение Нулевой ссылки выдается, по существу говоря это [folder].ManagedFolderInformation
ссылка несуществующего объекта.
Для ясности я также попытался просто получить размер корневой папки:
Console.Write(root.ManagedFolderInformation.FolderSize.ToString());
Который выдал то же исключение NRE, таким образом, я знаю, что это не просто что, после того как Вы добираетесь до определенной глубины в дереве каталогов, что ManagedFolderInformation не существует.
Какие-либо идеи о том, как получить общий размер почтового ящика пользователя? Я рявкаю неправильное дерево?
Первая ссылка - это путь, по которому вы хотите перейти. В сообщении описывается, что папки по умолчанию не считаются «управляемыми папками», поэтому вы получаете NRE в свойстве ManagedFolderInformation для некоторых папок.
В сообщении предлагается добавить расширенное свойство к запросу папок. Вот страница MSDN о том, как это сделать с помощью управляемого API.
Я пытался найти хороший пример, но не нашел. Это должно указать вам правильное направление. Если я что-нибудь найду, то обновлю свой ответ.