处理IMAP邮箱名称的大小写敏感性
我有一个用Python写的脚本,它使用imaplib连接到一个Gmail账户,并根据邮箱地址中的“+”标签来整理邮件。比如说,发到myaccount+root.foo.bar@gmail.com的邮件会被移动到root\foo\bar这个文件夹里。
我的逻辑是这样的:提取标签 -> 尝试创建文件夹 -> 把邮件复制到文件夹里。
有时候会收到带有相同标签但大小写不同的邮件,比如myaccount+root.FOO.BAR@gmail.com,这样就会出现以下情况:
#Attempting to creating folder 'root/FOO/BAR'
('NO', ['[ALREADYEXISTS] Folder name conflicts with existing folder name. (Failure)'])
#Copying message to folder 'root/FOO/BAR'
('NO', ['[TRYCREATE] No folder root/FOO/BAR (Failure)'])
这样就导致无法创建文件夹,因为已经存在一个同名的文件夹(只是大小写不同),而复制邮件又失败,因为系统找不到这个明确的文件夹。
有没有什么聪明的方法可以让我找到现有文件夹的正确大小写,这样我就能顺利地移动邮件了呢?
注意:这并不是简单地把所有标签都强制转换成小写。用户在用邮件客户端连接账户时,有时会手动创建文件夹,使用他们当时觉得合适的大小写。
1 个回答
2
所以谷歌说这个文件夹已经存在了,但当你试着把东西放进去的时候又报错?真是太棒了。
IMAP有一个“LIST”命令,可以列出可用的邮箱(文件夹):
https://www.rfc-editor.org/rfc/rfc3501#section-6.3.8
如何访问这个命令取决于你使用的IMAP客户端库。这里有几个例子。