开发者

Dealing with IMAP mailbox name case sensitivty

开发者 https://www.devze.com 2023-03-12 05:49 出处:网络
I have a python script using imaplib that connects to a gmail account and sorts emails based on \'+\' tags found in the email address. For example: emails sent to myaccount+root.foo.bar@gmail.com get

I have a python script using imaplib that connects to a gmail account and sorts emails based on '+' tags found in the email address. For example: emails sent to myaccount+root.foo.bar@gmail.com get moved to root\foo\bar.

My logic goes as follows: extract tags -> attempt to create folders -> copy message to folder.

Ocassionally an email will come in with the same tags, but different casing. myaccount+root.FOO.BAR@gmail.com, for example, and leads to this output:

#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)'])

So it fails to create the folder, because a folder with the same name already exists (just with different case), but the copy fails because the explicit folder doesn't exist.

Is there some clever way that I can figure out the correct case of the existing folder so I can move the message without issue?

Note: This isn't as easy as just forcing all tags to low开发者_如何学编程ercase. A User connects to the account with an email client and ocassioanlly manually makes folders with whatever casing makes sense to them at the time.


So Google complains that the folder already exists, but then gives an error when you try to move something into it? Terrific.

IMAP has a "LIST" command to list available mailboxes (folders):

https://www.rfc-editor.org/rfc/rfc3501#section-6.3.8

How to access that depends on your IMAP client library. Here are a couple of examples.

0

精彩评论

暂无评论...
验证码 换一张
取 消