使用 Python 访问 Outlook 中的嵌套收件箱文件夹

Accessing nested Inbox folders in Outlook with Python

提问人:locolindo 提问时间:11/9/2023 最后编辑:Eugene Astafievlocolindo 更新时间:11/9/2023 访问量:26

问:

我正在尝试使用 Python 获取存储在嵌套在收件箱内的 Outlook 子文件夹中的附件。 我们将要访问的文件夹称为“TargetFolder”,将每个子级别称为“子文件夹 1”、“子文件夹 2”等。 我可以让它工作,但我不确定我的代码是否非常有效,因为每次深入子文件夹时都必须声明每个文件夹 - 因此我希望有一种更有效的方法。

目前,我的代码如下所示:

import win32com.client as client   # import the library for interacting with Outlook

outlook = client.Dispatch("Outlook.Application")
namespace = outlook.GetNamespace("MAPI")
inbox = namespace.GetDefaultFolder(6)  # Default OlDefaultFolders enumeration for "Inbox" (Outlook)

Subfolder1_folder = inbox.Folders["Sub Folder 1"]              # First Level
Subfolder2_folder = Subfolder1_folder.Folders["Sub Folder 2"]  # Second Level
Subfolder3_folder = Subfolder2_folder.Folders["Sub Folder 3"]  # Third Level
Subfolder4_folder = Subfolder3_folder.Folders["Sub Folder 4"]  # Fourth Level
TargetFolder = Subfolder4_folder.Folders["Target Folder"]      # Target Level

有没有办法写出更好的代码?我试着写“子文件夹 1/子文件夹 2”之类的东西......但我遇到错误

谢谢!!!

python outlook pywin32 win32com 办公自动化

评论


答:

0赞 Eugene Astafiev 11/9/2023 #1

Outlook 对象模型不提供任何其他获取子文件夹的方法。无论如何,您都需要处理该物业。Folders

0赞 Dmitry Streblechenko 11/9/2023 #2

首先,您不必声明单独的变量 - 您可以继续重用相同的变量。其次,您可以创建一个采用 Folder 对象和路径(字符串)的函数。它可以从路径中提取文件夹名称,如果仍有路径要处理,则删除当前文件夹的名称,并使用子文件夹和剩余路径调用自身。