How to send a non-standard IMAP command?

Tim Chase python.list at tim.thechases.com
Thu Jun 24 10:25:09 EDT 2010


On 06/24/2010 04:47 AM, Xianwen Chen wrote:
> Thanks a lot for your reply! I thought it would be simpler if the
> problem was presented in a brief way. Unfortunately, not for this
> case.
>
> Here is the detail. Free Yahoo! mail accounts can be accsessed via
> IMAP protocal, however, a non-standard shake hand code is needed
> before log in [1]:
>
> ID ("GUID" "1")
>
> . This is what I'm now working for. I tried:
>
> IMAP4.xatom('','ID ("GUID" "1")','',)
>
> and
>
> dest_srv.xatom('ID ("GUID" "1")')
>
> , but I got error messages. Any hint please?

In general, it would be helpful to include the error-message(s) 
you get.  However, I tried it with a junk Yahoo account I set up:

   from imaplib import IMAP4
   i = IMAP4("imap.mail.yahoo.com")
   USER = 'yourusername at yahoo.com'
   PASS = 'your secret goes here'
   # per the Wikipedia page you gave
   # the ID has to happen before login
   i.xatom('ID ("GUID" "1")')

   i.login(USER, PASS)
   i.select()
   typ, data = i.search(None, 'ALL')
   for num in data[0].split():
     typ, data = i.fetch(num, '(RFC822)')
     message = data[0][1].splitlines()
     subject = [line
       for line in message
       if line.lower().startswith('subject: ')
       ][0]
     print num, subject
   i.close()
   i.logout()

and it worked.

-tkc






More information about the Python-list mailing list