IMAP Problems

MRAB python at mrabarnett.plus.com
Sat Jul 3 19:28:57 EDT 2010


Paul Jefferson wrote:
> Hi, 
> I'm trying to write a simple script which displays the basic details 
> of a person's mailbox. My problem is that it causes all the messages 
> to be marked as read on the server, which is not what I'm after, and 
> I also can't get the imap.sort command to work properly (currently 
> commented out as I replaced it with a imap.search to get the thing 
> working. 
> These are probably very simple things, but I've not tried this library 
> before so am a bit stuck so any help wwould be very gratefully 
> received. 
> Thanks, 
> Paul 
> 
> Code: 
> 
> # -*- coding: cp1252 -*- 
> import imaplib,email 
> 
> # you want to connect to a server; specify which server 
> server= imaplib.IMAP4_SSL('imap.googlemail.com 
> <http://imap.googlemail.com>') 
> # after connecting, tell the server who you are 
> server.login('x... 
> <http://groups.google.com/groups/unlock?_done=/group/comp.lang.python/browse_thread/thread/024b81e0ea199177&msg=c9ac781cea58a990>@gmail.com 
> <http://gmail.com>', 'xxxxxxx') 
> # this will show you a list of available folders 
> # possibly your Inbox is called INBOX, but check the list of mailboxes 
> code, mailboxen= server.list() 
> print mailboxen 
> # if it's called INBOX, then… 
> server.select("INBOX") 
> 
> typ, data = server.search(None, 'ALL') 
> #typ, data = server.sort("Date","UTF-8", 'ALL') 
> print len(data[0].split()) 
> for num in data[0].split(): 
>     typ, data = server.fetch(num, '(RFC822)') 
>     #print 'Message %s\n%s\n' % (num, data[0][1]) 
>     msg = email.message_from_string(data[0][1]) 
>     print msg["From"] 
>     print msg["Subject"] 
>     print msg["Date"] 
>     print "_______________________________" 
> 
> server.close() 
> server.logout() 
> 
You might want to read what it says here:

     http://tools.ietf.org/html/rfc2060.html#page-41

If you can use '(BODY[])' instead of '(RFC822)' then you could use
'(BODY.PEEK[])'.

Alternatively, try:

     server.store(num, '-FLAGS', r'\Seen')

to mark it as unread after fetching.



More information about the Python-list mailing list