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<pywin...@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@twistedmatrix.com > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python > > -- Alex Clemesha clemesha.org _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python