python #list #for-loop #recursion #outlook
#python #Список #для цикла #рекурсия #outlook
Вопрос:
Я хотел бы перечислить все папки в Outlook, например:
xyz@abc.comInboxCustomersCustomer A
xyz@abc.comInboxCustomersCustomer B
xyz@abc.comInboxVendorsVendor A
Я нашел код, который работает, но я не знаю, как я могу собирать и объединять папки во время рекурсивного вызова.
import codecs, win32com.client
def DumpFoldersRecursive(folders,indent):
folder_paths = []
for i in range(1,folders.Count 1):
folder = folders[i]
print(folder)
DumpFoldersRecursive(folder.Folders,indent 1)
def DumpOutlookFolders():
o = win32com.client.Dispatch("Outlook.Application")
DumpFoldersRecursive(o.GetNamespace("MAPI").Folders,0)
o = None
DumpOutlookFolders()
Не могли бы вы помочь, как мне заполнить список folder_paths .
Комментарии:
1. Вы должны либо заставить свою функцию rec возвращать содержимое, чтобы вы могли обрабатывать результаты, либо передавать информацию о текущей папке в рекурсивный вызов в качестве параметров, чтобы рекурсивный вызов мог ее использовать.
Ответ №1:
Вы могли бы взглянуть на Exchangelib.
В нем есть много полезных функций для того, что вы пытаетесь сделать, но я думаю, вы могли бы просто использовать функцию дерева, которая выглядит следующим образом:
print(a.root.tree())
'''
root
├── inbox
│ └── todos
└── archive
├── Last Job
├── exchangelib issues
└── Mom
'''
Комментарии:
1. Спасибо @Biorez. Для Exchangelib я должен знать пароль учетной записи, но для этого проекта он не указан. Вот почему мне нужно найти другой подход.