473,698 Members | 2,058 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

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

This little program gives IMO a strange result.

import imaplib

user = "cpapen"

cyr = imaplib.IMAP4(" imap.vub.ac.be" )
cyr.login("cyru s", "cOn-A1r")
rc, lst = cyr.list('""', "user/%s/*" % user)
for el in lst:
print "%r" % (el,)

And the result is:

'(\\HasNoChildr en) "/" "user/cpapen/Out"'
'(\\HasNoChildr en) "/" "user/cpapen/Punten"'
'(\\HasNoChildr en) "/" "user/cpapen/Spam"'
'(\\HasNoChildr en) "/" "user/cpapen/agoog to be"'
'(\\HasNoChildr en) "/" "user/cpapen/artistiek &- kunst"'
'(\\HasNoChildr en) "/" "user/cpapen/copains et copinnes =x="'
'(\\HasNoChildr en) "/" "user/cpapen/cp &- writing"'
'(\\HasNoChildr en) "/" "user/cpapen/examen"'
'(\\HasNoChildr en) "/" "user/cpapen/important info (pass)"'
'(\\HasNoChildr en) "/" "user/cpapen/lesmateriaal"'
'(\\HasNoChildr en) "/" "user/cpapen/love &- flesh for fantasy"'
'(\\HasNoChildr en) "/" "user/cpapen/media"'
'(\\HasNoChildr en) "/" "user/cpapen/music &- beats"'
('(\\HasNoChild ren) "/" {25}', 'user/cpapen/newsletters %')
''
'(\\HasNoChildr en) "/" "user/cpapen/organisatie &- structuur"'
'(\\HasNoChildr en) "/" "user/cpapen/sociale wetenschappen"'
'(\\HasNoChildr en) "/" "user/cpapen/the closest ones to me [x]"'
'(\\HasNoChildr en) "/" "user/cpapen/vubrations"'
'(\\HasNoChildr en) "/" "user/cpapen/wm2addressbook" '
'(\\HasNoChildr en) "/" "user/cpapen/wm2prefs"'
'(\\HasNoChildr en) "/" "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?

If it is, is it fixed in later versions?

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

--
Antoon Pardon
Nov 28 '06 #1
5 1803

Antoon Pardon wrote:
This little program gives IMO a strange result.

import imaplib

user = "cpapen"

cyr = imaplib.IMAP4(" imap.vub.ac.be" )
cyr.login("cyru s", "cOn-A1r")
rc, lst = cyr.list('""', "user/%s/*" % user)
for el in lst:
print "%r" % (el,)

And the result is:

'(\\HasNoChildr en) "/" "user/cpapen/Out"'
'(\\HasNoChildr en) "/" "user/cpapen/Punten"'
'(\\HasNoChildr en) "/" "user/cpapen/Spam"'
'(\\HasNoChildr en) "/" "user/cpapen/agoog to be"'
'(\\HasNoChildr en) "/" "user/cpapen/artistiek &- kunst"'
'(\\HasNoChildr en) "/" "user/cpapen/copains et copinnes =x="'
'(\\HasNoChildr en) "/" "user/cpapen/cp &- writing"'
'(\\HasNoChildr en) "/" "user/cpapen/examen"'
'(\\HasNoChildr en) "/" "user/cpapen/important info (pass)"'
'(\\HasNoChildr en) "/" "user/cpapen/lesmateriaal"'
'(\\HasNoChildr en) "/" "user/cpapen/love &- flesh for fantasy"'
'(\\HasNoChildr en) "/" "user/cpapen/media"'
'(\\HasNoChildr en) "/" "user/cpapen/music &- beats"'
('(\\HasNoChild ren) "/" {25}', 'user/cpapen/newsletters %')
''
'(\\HasNoChildr en) "/" "user/cpapen/organisatie &- structuur"'
'(\\HasNoChildr en) "/" "user/cpapen/sociale wetenschappen"'
'(\\HasNoChildr en) "/" "user/cpapen/the closest ones to me [x]"'
'(\\HasNoChildr en) "/" "user/cpapen/vubrations"'
'(\\HasNoChildr en) "/" "user/cpapen/wm2addressbook" '
'(\\HasNoChildr en) "/" "user/cpapen/wm2prefs"'
'(\\HasNoChildr en) "/" "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

Nov 28 '06 #2
On 2006-11-28, Leo Kislov <Le********@gma il.comwrote:
>
Antoon Pardon wrote:
>This little program gives IMO a strange result.

import imaplib

user = "cpapen"

cyr = imaplib.IMAP4(" imap.vub.ac.be" )
cyr.login("cyr us", "cOn-A1r")
rc, lst = cyr.list('""', "user/%s/*" % user)
for el in lst:
print "%r" % (el,)

And the result is:

'(\\HasNoChild ren) "/" "user/cpapen/Out"'
'(\\HasNoChild ren) "/" "user/cpapen/Punten"'
'(\\HasNoChild ren) "/" "user/cpapen/Spam"'
'(\\HasNoChild ren) "/" "user/cpapen/agoog to be"'
'(\\HasNoChild ren) "/" "user/cpapen/artistiek &- kunst"'
'(\\HasNoChild ren) "/" "user/cpapen/copains et copinnes =x="'
'(\\HasNoChild ren) "/" "user/cpapen/cp &- writing"'
'(\\HasNoChild ren) "/" "user/cpapen/examen"'
'(\\HasNoChild ren) "/" "user/cpapen/important info (pass)"'
'(\\HasNoChild ren) "/" "user/cpapen/lesmateriaal"'
'(\\HasNoChild ren) "/" "user/cpapen/love &- flesh for fantasy"'
'(\\HasNoChild ren) "/" "user/cpapen/media"'
'(\\HasNoChild ren) "/" "user/cpapen/music &- beats"'
('(\\HasNoChil dren) "/" {25}', 'user/cpapen/newsletters %')
''
'(\\HasNoChild ren) "/" "user/cpapen/organisatie &- structuur"'
'(\\HasNoChild ren) "/" "user/cpapen/sociale wetenschappen"'
'(\\HasNoChild ren) "/" "user/cpapen/the closest ones to me [x]"'
'(\\HasNoChild ren) "/" "user/cpapen/vubrations"'
'(\\HasNoChild ren) "/" "user/cpapen/wm2addressbook" '
'(\\HasNoChild ren) "/" "user/cpapen/wm2prefs"'
'(\\HasNoChild ren) "/" "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:

'(\\HasNoChildr en) "/" "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
Nov 29 '06 #3
Antoon Pardon wrote:
On 2006-11-28, Leo Kislov <Le********@gma il.comwrote:

Antoon Pardon wrote:
This little program gives IMO a strange result.

import imaplib

user = "cpapen"

cyr = imaplib.IMAP4(" imap.vub.ac.be" )
cyr.login("cyru s", "cOn-A1r")
rc, lst = cyr.list('""', "user/%s/*" % user)
for el in lst:
print "%r" % (el,)

And the result is:

'(\\HasNoChildr en) "/" "user/cpapen/Out"'
'(\\HasNoChildr en) "/" "user/cpapen/Punten"'
'(\\HasNoChildr en) "/" "user/cpapen/Spam"'
'(\\HasNoChildr en) "/" "user/cpapen/agoog to be"'
'(\\HasNoChildr en) "/" "user/cpapen/artistiek &- kunst"'
'(\\HasNoChildr en) "/" "user/cpapen/copains et copinnes =x="'
'(\\HasNoChildr en) "/" "user/cpapen/cp &- writing"'
'(\\HasNoChildr en) "/" "user/cpapen/examen"'
'(\\HasNoChildr en) "/" "user/cpapen/important info (pass)"'
'(\\HasNoChildr en) "/" "user/cpapen/lesmateriaal"'
'(\\HasNoChildr en) "/" "user/cpapen/love &- flesh for fantasy"'
'(\\HasNoChildr en) "/" "user/cpapen/media"'
'(\\HasNoChildr en) "/" "user/cpapen/music &- beats"'
('(\\HasNoChild ren) "/" {25}', 'user/cpapen/newsletters %')
''
'(\\HasNoChildr en) "/" "user/cpapen/organisatie &- structuur"'
'(\\HasNoChildr en) "/" "user/cpapen/sociale wetenschappen"'
'(\\HasNoChildr en) "/" "user/cpapen/the closest ones to me [x]"'
'(\\HasNoChildr en) "/" "user/cpapen/vubrations"'
'(\\HasNoChildr en) "/" "user/cpapen/wm2addressbook" '
'(\\HasNoChildr en) "/" "user/cpapen/wm2prefs"'
'(\\HasNoChildr en) "/" "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:

'(\\HasNoChildr en) "/" "user/cpapen/newsletters %"'
This is described in section 4.3. imaplib is too close to the protocol.
It should interpret response for each command separately. For example
list method could return list of tuples like:

("\\HasNoChildr en", "/", "user/cpapen/newsletters %")

Without this abstraction level in imaplib you have to build it
yourself.
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.
I was talking only about empty string response. Is it still there?
Anyway, this issue requires investigation. That could also be a bug in
the server.

-- Leo

Nov 29 '06 #4
On 2006-11-29, Leo Kislov <Le********@gma il.comwrote:
Antoon Pardon wrote:
>On 2006-11-28, Leo Kislov <Le********@gma il.comwrote:
>
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:

'(\\HasNoChildr en) "/" "user/cpapen/newsletters %"'

This is described in section 4.3. imaplib is too close to the protocol.
It should interpret response for each command separately. For example
list method could return list of tuples like:

("\\HasNoChildr en", "/", "user/cpapen/newsletters %")

Without this abstraction level in imaplib you have to build it
yourself.
Ah yes, I'm beginning to understand now, what is going on.

I also did a imap session by hand using telnet. That helped.
>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.

I was talking only about empty string response. Is it still there?
Anyway, this issue requires investigation. That could also be a bug in
the server.
The empty line is still there using 2.4.
This is part of the session I did by hand. It doesn't seem to be a
server problem.

$ telnet machine.domain imap
Trying xxx.xxx.xxx.xxx ...
Connected to machine.domain
Escape character is '^]'.
* OK maxi Cyrus IMAP4 v2.2.13 server ready
0001 LOGIN ... ....
0001 OK User logged in
0002 LIST "" user/cpapen/*
* LIST (\HasNoChildren ) "/" "user/cpapen/Out"
....
* LIST (\HasNoChildren ) "/" "user/cpapen/music &- beats"
* LIST (\HasNoChildren ) "/" {25}
user/cpapen/newsletters %
* LIST (\HasNoChildren ) "/" "user/cpapen/organisatie &- structuur"
* LIST (\HasNoChildren ) "/" "user/cpapen/sociale wetenschappen"
....
Many thanks for your contribution.

--
Antoon Pardon
Nov 29 '06 #5
In article <sl************ ********@rcpc42 .vub.ac.be>,
Antoon Pardon <ap*****@forel. vub.ac.bewrote:
....
$ telnet machine.domain imap
Trying xxx.xxx.xxx.xxx ...
Connected to machine.domain
Escape character is '^]'.
* OK maxi Cyrus IMAP4 v2.2.13 server ready
0001 LOGIN ... ....
0001 OK User logged in
0002 LIST "" user/cpapen/*
* LIST (\HasNoChildren ) "/" "user/cpapen/Out"
...
* LIST (\HasNoChildren ) "/" "user/cpapen/music &- beats"
* LIST (\HasNoChildren ) "/" {25}
user/cpapen/newsletters %
* LIST (\HasNoChildren ) "/" "user/cpapen/organisatie &- structuur"
* LIST (\HasNoChildren ) "/" "user/cpapen/sociale wetenschappen"

{5}\r\nhello\r\ n is an IMAP "literal". It's unlucky that
Cyrus uses this for some LIST responses and not others, since
that will be a surprise to clients that use ad hoc parsing -
like imaplib users.

Donn Cave, do**@u.washingt on.edu
Nov 30 '06 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
2076
by: redneck_kiwi | last post by:
Hi all: I have a really weird problem. I am developing a customer catalog system for my company and as such have delved into sessions for authentication and access levels. So far, I have managed to get a working system just about finished. I am building an interface for our customer service folks to use to manage registered customers and am seeing some weird behavior.
1
1176
by: Florian Lindner | last post by:
Hi, I'm not sure where the problems lies... I'm using optparse and I've a option defined: parser.add_option("-t", "--type", action="callback", callback=option_callback, type="string") def option_callback(option, opt, value, parser, *args, **kwargs): if (str(option) == "-t/--type") and (opt in ("mailbox", "ftp")): print "Error!"
2
3179
by: Max M | last post by:
I am using the fetch command from the imaplib to fetch messages. I get a result, but I am a bit uncertain as to how I should interpret it. The result is described at http://pydoc.org/2.3/imaplib.html as:: (typ, ) = <instance>.fetch(message_set, message_parts) In RFC 2060 it says: "The data items to be fetched can be either a single atom or a parenthesized list."
0
1750
by: Wolfgang Kohnen | last post by:
Hello out there! I am new to python and so far I like it a lot. Now I want to create some IMAP mailboxes on my cyrus imapd, with quotas and each user should be subscribed to her/his own spam folder. This is what I've attempted: > >>> import imaplib, getpass > >>> cyrus = imaplib.IMAP4() > >>> cyrus.login("cyrus", getpass.getpass()) > Password:
5
1113
by: matt dittman | last post by:
I have created a windows service that reads emails from a drop directory and moves them to the appropriate mail folder every 15 seconds. I can move, rename and delete the files as needed, up until the CDO.DropDirectory.GetMessages() method is called. At this point, the files are locked until I shut down the service. After processing and delivery, I need to be able to delete all the files in the drop directory. I can delete them via...
0
934
by: Laszlo Nagy | last post by:
Hello, I'm trying to write a very simple program that moves all messages from INBOX into another folder. I'm not sure what am I doing wrong. This is a very simple task. I believe I need to call these methods: - search -get all message UIDs in the INBOX - copy -copy all messages to another folder - store -mark all messages in INBOX as deleted
1
2142
by: aspineux | last post by:
imaplib use exception to report errors, but some problems must be detected by checking the return value ! For example, when trying to append into a mailbox with wrong ACL, imaplib return 'NO', but dont raise any exception (I give a sample at the end). This make error handling more complicate, because any imap statement is supposed to be followed by a test of the returned value! Why not report all problems using exceptions ?
0
1541
by: aspineux | last post by:
setacl and getacl look to be already "Cyrus" specific (according the doc), why not to extend imaplib a little bit more ? Here are some code I wrote and tested to support cyrus "expire" that manage how long a message can stay into a mailbox. This is usefull for NEWS server ! The code is preceded by lot of sample.
4
11773
by: gregpinero | last post by:
I'm trying to get a list of messages from GMAIL using it's new IMAP access. So far I've tried running this command but it just hangs. Any ideas? I figured that's the first line to run from this example: http://docs.python.org/lib/imap4-example.html Here are the configuration settings GMAIL says to use:
0
8674
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8603
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
8861
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7725
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6518
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5860
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4369
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
2329
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2001
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.