python - 使用 imapclient for Python 创建 IMAP 子文件夹的正确方法是什么?
问题描述
我有看起来像这样的代码
import imapclient
archive_folder = "Archive"
aggregate_reports_folder = "{0}/Aggregate".format(archive_folder)
forensic_reports_folder = "{0}/Forensic".format(archive_folder)
server = imapclient.IMAPClient("example.com", use_uid=True)
server.login("user", "foobar")
if not server.folder_exists(archive_folder):
server.create_folder(archive_folder)
if not server.folder_exists(aggregate_reports_folder):
server.create_folder(aggregate_reports_folder)
if not server.folder_exists(forensic_reports_folder):
server.create_folder(forensic_reports_folder)
它在 Office 365/Exchange 上运行良好,但在 dovecot 上运行良好。在 dovecot 上会导致错误:
错误:创建失败:[CANNOT] 无效的邮箱名称:名称不能包含“/”字符
我尝试删除/subfolder
文件夹名称的一部分,并select_folder(archive_folder)
首先运行,但这只会创建与存档相同级别的文件夹。然而,Thunderbird 可以毫无问题地创建子文件夹。
如何以适用于所有 IMAP 服务器的方式使用 imapclient 创建 IMAP 子文件夹?另外,如何将邮件移动到这些子文件夹?
解决方案
我在 dovecot邮件列表中找到了答案。
目前 Dovecot 仅支持 Maildir++ 目录布局,它指定了 '.' 字符用作文件系统中的分隔符。
因此,在构建子文件夹路径时,.
请用作分隔符,而不是/
.
推荐阅读
- reactjs - React-native :app:transformDexArchiveWithExternalLibsDexMergerForDebug 失败
- c++ - QT GStreamer Windows 链接器问题
- android - 是否可以将持久底片作为片段?
- java - 建立 SSL 主机连接时无法使用签名证书验证 Cacerts
- angular - 使用 `ng build --prod` 编译 Angular 项目时出现错误
- ubuntu - 如何检查ubuntu服务器上是否禁用了root登录
- python - 使用 with 在烧瓶中获取闪烁的消息
- oracle - 选定数据的物化视图刷新 - Oracle
- angular - 如何在Angular6中映射json结构的接口
- python - 抓取 CSV 的 url 列表并将结果输出到不同的 CSV