Problem with imaplib (weird result if mailbox contains a %)

Leo Kislov Leo.Kislov at gmail.com
Tue Nov 28 17:19:21 CET 2006


Antoon Pardon wrote:
> This little program gives IMO a strange result.
>
> import imaplib
>
> user = "cpapen"
>
> cyr = imaplib.IMAP4("imap.vub.ac.be")
> cyr.login("cyrus", "cOn-A1r")
> rc, lst = cyr.list('""', "user/%s/*" % user)
> for el in lst:
>   print "%r" % (el,)
>
> And the result is:
>
> '(\\HasNoChildren) "/" "user/cpapen/Out"'
> '(\\HasNoChildren) "/" "user/cpapen/Punten"'
> '(\\HasNoChildren) "/" "user/cpapen/Spam"'
> '(\\HasNoChildren) "/" "user/cpapen/agoog to be"'
> '(\\HasNoChildren) "/" "user/cpapen/artistiek &- kunst"'
> '(\\HasNoChildren) "/" "user/cpapen/copains et copinnes =x="'
> '(\\HasNoChildren) "/" "user/cpapen/cp &- writing"'
> '(\\HasNoChildren) "/" "user/cpapen/examen"'
> '(\\HasNoChildren) "/" "user/cpapen/important info (pass)"'
> '(\\HasNoChildren) "/" "user/cpapen/lesmateriaal"'
> '(\\HasNoChildren) "/" "user/cpapen/love &- flesh for fantasy"'
> '(\\HasNoChildren) "/" "user/cpapen/media"'
> '(\\HasNoChildren) "/" "user/cpapen/music &- beats"'
> ('(\\HasNoChildren) "/" {25}', 'user/cpapen/newsletters %')
> ''
> '(\\HasNoChildren) "/" "user/cpapen/organisatie &- structuur"'
> '(\\HasNoChildren) "/" "user/cpapen/sociale wetenschappen"'
> '(\\HasNoChildren) "/" "user/cpapen/the closest ones to me [x]"'
> '(\\HasNoChildren) "/" "user/cpapen/vubrations"'
> '(\\HasNoChildren) "/" "user/cpapen/wm2addressbook"'
> '(\\HasNoChildren) "/" "user/cpapen/wm2prefs"'
> '(\\HasNoChildren) "/" "user/cpapen/wm2signature"'
>
>
> What I have a problem with is the 14th and 15th line.
> All other entries are strings but the 14th is a tuple.
> and the 15th is an empty string. As far as I can tell
> every time a "%" is in the mailbox name I get this kind of
> result.
>
> I'm using python 2.3.3 and the imap sytem is Cyrus.
>
> Can someone explain what is going one?
>
> Is this a bug?

Empty string seems to be a bug. But tuple is by design, read the docs
and imap rfc. The protocol is convoluted in the first place, and so is
python interface.

> If it is, is it fixed in later versions?

Why don't you try to pull imaplib.py from later versions? I don't think
it changed that much so it should be compatible with python 2.3

> Whether or not it is a bug, can I rely on the mailbox
> being the last item in the tuple in these cases?

Yes (at least for list command)

  -- Leo




More information about the Python-list mailing list