使用python提取Outlook邮箱中每个文件夹的名称

Using python to extract the names of every folder in Outlook mailbox

我正在尝试获取我在 outlook 邮箱中看到的所有文件夹名称的列表,方法是使用以下代码:

import win32com.client

def AllFolders(folders):
    my_list = []
    for folder in folders:
        AllFolders(folder.Folders)
        print(folder.name)
        my_list.append(folder.name)
        return my_list

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
user = outlook.Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress
z = AllFolders(outlook.Folders[user].Folders)

我的问题是:如果我删除 return,我可以看到 return 由 print 编辑的所有文件夹,但如果尝试 return 列表每个文件夹(基本上将我在 print 中看到的内容存储在列表中),我得到 z 这只是打印的第一个元素。

如何列出每个文件夹的名称?

您只需将递归调用返回的列表连接到您的列表即可。

我还将调用(和 print() 行)移到了 my_list.append() 行之后,只是为了在父文件夹之后添加子文件夹。

import win32com.client

def AllFolders(folders):
    my_list = []
    for folder in folders:
        print(folder.name)
        my_list.append(folder.name)
        my_list += AllFolders(folder.Folders)
    return my_list

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
user = outlook.Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress
z = AllFolders(outlook.Folders[user].Folders)