[Twisted-Python] Need working examples of imap4 client.

Alex Clemesha clemesha at gmail.com
Fri Jun 12 04:40:57 EDT 2009


Hi,

I've wondered myself how to do this, so thanks Phil.

I extended Phil's solution to work with Gmail, which boils
down to using SSL and setting the correct servername and port, see here:
http://gist.github.com/128521

Pywinder, you should be able to just change the username/password
and it will work for you (you might have to have the python ssl module
installed - post again if that is the case and it's not working for you)

How to do useful stuff with the 'mailboxes' function in the script is
another question (which I dont know the answer to).  Maybe post
your usage if you have a chance.


-Alex





On Thu, Jun 11, 2009 at 5:45 PM, Pywinder
Singh<pywinder at monkeydriveengine.com> wrote:
> Phil,
>
> Much obliged.
>
> Was able to isolate and confirm that the real issue is that login is hanging
> for some reason, and causing the timeout message. I suspect SSL/TLS issues,
> which at least gives me a decided place to start investigating.
>
> Thanks again for the code, it was sanity inducing to say the least. ;)
>
>
> Phil Mayers wrote:
>>
>> Pywinder Singh wrote:
>> >
>> > Ideally, I'd love to see a snipped which is able to log into an imap
>> > server and gets a list of mailboxes.  If the example on the site works
>>
>> Here you go:
>>
>> #!/usr/bin/python
>>
>> from twisted.internet import reactor, protocol, defer
>> from twisted.mail import imap4
>>
>> # change these...
>> username = '?'
>> password = '?'
>> servername = '?'
>>
>> def mailboxes(list):
>>      for flags,sep,mbox in list:
>>          print mbox
>>
>> def loggedin(res, proto):
>>      d = proto.list('','*')
>>      d.addCallback(mailboxes)
>>      return d
>>
>> def connected(proto):
>>      print "connected", proto
>>      d = proto.login(username, password)
>>      d.addCallback(loggedin, proto)
>>      return d
>>
>> def failed(f):
>>      print "failed", f
>>      return f
>>
>> def done(_):
>>      reactor.callLater(0, reactor.stop)
>>
>> def main():
>>      c = protocol.ClientCreator(reactor, imap4.IMAP4Client)
>>      d = c.connectTCP(servername, 143)
>>      d.addCallbacks(connected, failed)
>>      d.addBoth(done)
>>
>> reactor.callLater(0, main)
>> reactor.run()
>>
>>
>> This example makes use of deferred chaining i.e. returning a deferred
>> from a callback handler, so you'll want to understand that.
>
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>



-- 
Alex Clemesha
clemesha.org




More information about the Twisted-Python mailing list