Re: IMAP Problems

Discussion in 'Python' started by MRAB, Jul 4, 2010.

  1. MRAB

    MRAB Guest

    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.
    MRAB, Jul 4, 2010
    #1
    1. Advertising


  2. > 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,
    >
    > code, mailboxen= server.list()
    > print mailboxen
    > # if it's called INBOX, then…
    > server.select("INBOX")


    You probably want to try examine() instead of select(). That opens
    the mailbox in a read-only mode which and should avoid changing any
    flag values.

    From RFC3501:

    The EXAMINE command is identical to SELECT and returns the same
    output; however, the selected mailbox is identified as
    read-only. No changes to the permanent state of the mailbox,
    including per-user state, are permitted; in particular, EXAMINE
    MUST NOT cause messages to lose the \Recent flag.

    --
    Grant
    Grant Edwards, Jul 4, 2010
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Henrik Ormåsen

    Curier-IMAP and imap.create()

    Henrik Ormåsen, Aug 19, 2006, in forum: Ruby
    Replies:
    0
    Views:
    174
    Henrik Ormåsen
    Aug 19, 2006
  2. Jon Fi
    Replies:
    4
    Views:
    520
    Kashia Buch
    Oct 21, 2006
  3. jasonnaylor
    Replies:
    1
    Views:
    247
    jasonnaylor
    Apr 16, 2008
  4. Adam Akhtar
    Replies:
    1
    Views:
    171
    Eric Hodel
    Dec 15, 2008
  5. Abhishiv Saxena

    Support for IMAP IDLE in net/imap

    Abhishiv Saxena, Jul 3, 2009, in forum: Ruby
    Replies:
    4
    Views:
    190
    Eric Hodel
    Jul 4, 2009
Loading...

Share This Page