Рекурсивный цикл в Python для получения папок Outlook

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 я должен знать пароль учетной записи, но для этого проекта он не указан. Вот почему мне нужно найти другой подход.