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

Antoon Pardon apardon at forel.vub.ac.be
Wed Nov 29 03:00:48 EST 2006


On 2006-11-28, Leo Kislov <Leo.Kislov at gmail.com> wrote:
>
> 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.

Are there more docs than at http://www.python.org/doc/. I don't find
those very helpfull in explaining this.

I also took a look at rfc 2060 and to be honest I don't find anything
there to explain this difference. I only took a closer look at section
7.2.2. So maybe I should look somewehere else but after reading section
7.2.2. I don't understand why the list method returned a tuple for this
mailbox instead of the following string:

   '(\\HasNoChildren) "/" "user/cpapen/newsletters %"'

>
>> 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

I could take my hands on a 2.4 version and the result was the same.

>> 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)

Well that is at least comforting.

-- 
Antoon Pardon



More information about the Python-list mailing list