Используя python exchangelib, как получить общий размер сообщений в почтовой папке

Я могу перебрать всю почтовую папку, используя for item in account.root.get_folders() и if item.__class__ == exchangelib.folders.Messages:, но как я могу получить объем пространства, используемого сообщениями в этой папке?

Я читал в Интернете, что размер папки — это расширенный тип свойства EWS, но как мне получить это через exchangelib? (К вашему сведению, это свойство PropertyTag: 0x0e08; PropertyType: Integer)


person Lars Nordin    schedule 15.06.2017    source источник


Ответы (1)


exchangelib пока не поддерживает расширенные свойства папок. EWS предоставляет атрибут size для элементов, которые можно легко добавить в exchangelib (не стесняйтесь открывать вопрос :-)), что позволит вам сделать что-то вроде этого:

sum(some_folder.all().values_list('size', flat=True))

Обновление: вот пример кода, использующего это для получения размера папки всех папок электронной почты (класс folder.Message):

for folder in account.root.find_folders():
  if folder.__class__ != exchangelib.folders.Messages:
      continue
  fsum = sum(folder.all().values_list('size', flat=True))
  print('{0:>40s} {1:12,d}'.format(folder.name.encode('utf-8'), fsum))
person Erik Cederstrand    schedule 10.07.2017
comment
Спасибо за ответ! - person Lars Nordin; 11.07.2017