使用Exchangelib创建收件箱子文件夹的子文件夹是否可行?
在Exchangelib中创建收件箱的多级子文件夹
当然可以实现!Exchangelib完全支持创建收件箱的多层嵌套子文件夹,你的现有代码已经走对了方向,只需要调整父文件夹的指向就能搞定更深层级的文件夹。
具体实现方法
核心思路就是:先创建(或找到)上一级的子文件夹,然后把它作为新文件夹的parent参数传入即可。
这里给你两种场景的示例代码:
1. 直接连续创建多级文件夹
如果是一次性创建一级和二级子文件夹,可以这么写:
from exchangelib import Credentials, Account, Folder credentials = Credentials('test.example@mail.com', 'password') account = Account('test.example@mail.com', credentials=credentials, autodiscover=True) # 创建收件箱的一级子文件夹 first_subfolder = Folder(parent=account.inbox, name="一级子文件夹") first_subfolder.save() # 以一级子文件夹为父,创建二级子文件夹 second_subfolder = Folder(parent=first_subfolder, name="二级子文件夹") second_subfolder.save() # 要是需要移动邮件到二级文件夹,直接用你的现有逻辑就行 # item.move(second_subfolder)
2. 基于已存在的子文件夹创建下一级
如果一级子文件夹已经存在,你可以先通过快捷方式找到它,再创建二级文件夹:
# 假设一级子文件夹已经存在,用"/"运算符快速定位 existing_first_subfolder = account.inbox / "一级子文件夹" # 创建二级子文件夹 second_subfolder = Folder(parent=existing_first_subfolder, name="二级子文件夹") second_subfolder.save()
一些小提醒
- 确保你的账号拥有在收件箱下创建子文件夹的权限,不然会抛出权限相关的错误。
- 同一父文件夹下的子文件夹名称不能重复,否则
save()时会失败。 - Exchangelib的
/运算符是个很方便的功能,能帮你快速定位嵌套的文件夹,比手动遍历查找高效很多。
内容的提问来源于stack exchange,提问作者O. Schultz
相关产品推荐
相关产品推荐

