处理IMAP邮箱名称区分大小写

时间:2011-06-10 16:07:12

标签: python imap imaplib gmail-imap

我有一个使用imaplib的python脚本,它连接到一个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 个答案:

答案 0 :(得分:2)

因此Google抱怨该文件夹已经存在,但是当您尝试将某个内容移入其中时会出错?了不起。

IMAP有一个“LIST”命令列出可用的邮箱(文件夹):

http://tools.ietf.org/html/rfc3501#section-6.3.8

如何访问它取决于您的IMAP客户端库。 Here are a couple of examples