def onConnect(self, proto):
self["infolabel"].setText("connected")
+ proto.getCapabilities(
+ ).addCallback(self.cbCapabilities, proto
+ ).addErrback(self.ebCapabilities, proto
+ )
+
+ def cbCapabilities(self,reason,proto):
+ print "cbCapabilities",reason
+
self.doLogin(proto)
- #self.doLoginInsecure(proto)
+
+ def ebCapabilities(reason,proto):
+ print "ebCapabilities",reason
def onConnectFailed(self, reason):
self["infolabel"].setText(reason.getErrorMessage())
def doLogin(self, proto):
print "login secure"
- proto.authenticate(config.plugins.emailimap.password.value
- ).addCallback(self.onAuthentication, proto
- ).addErrback(self.onAuthenticationFailed, proto
- )
+ useTLS = False #True
+ if useTLS:
+ context = proto.context.getContext()
+ d = proto.startTLS(context)
+ d = d.addCallback(proto.authenticate, config.plugins.emailimap.password.value)
+ else:
+ d = proto.authenticate(config.plugins.emailimap.password.value)
+ d.addCallback(self.onAuthentication, proto)
+ d.addErrback(self.onAuthenticationFailed, proto)
+ return d
def onAuthenticationFailed(self, failure, proto):
# If it failed because no SASL mechanisms match
from twisted.mail import imap4
from twisted.protocols import basic
+#from twisted.python import log
+#log.startLogging(open("/tmp/twisted.log","w"))
+
class SimpleIMAP4Client(imap4.IMAP4Client):
greetDeferred = None
- def __init__(self,e2session, contextFactory = None):
+ def __init__(self,e2session, contextFac = None):
self.e2session = e2session
- imap4.IMAP4Client.__init__(self,contextFactory = contextFactory)
+ imap4.IMAP4Client.__init__(self,contextFactory = contextFac)
def serverGreeting(self, caps):
+ print "serverGreeting",caps
self.serverCapabilities = caps
if self.greetDeferred is not None:
d, self.greetDeferred = self.greetDeferred, None
protocol = SimpleIMAP4Client
- def __init__(self, e2session, username, onConn):
- self.ctx = ssl.ClientContextFactory()
+ def __init__(self, e2session, username, onConn,factory):
+ self.ctx = factory
self.e2session = e2session
self.username = username
self.onConn = onConn
def buildProtocol(self, addr):
- p = self.protocol(self.e2session,self.ctx)
+ print "building protocol",addr
+ p = self.protocol(self.e2session,contextFac = self.ctx)
p.factory = self
p.greetDeferred = self.onConn
auth = imap4.CramMD5ClientAuthenticator(self.username)
).addErrback(e2session.onConnectFailed
)
- factory = SimpleIMAP4ClientFactory(e2session,username, onConn)
- reactor.connectTCP(hostname, port, factory)
-
\ No newline at end of file
+ f2 = ssl.ClientContextFactory()
+ factory = SimpleIMAP4ClientFactory(e2session,username, onConn,f2)
+ if port == 993:
+ reactor.connectSSL( hostname, port,factory,f2)
+ else:
+ reactor.connectTCP( hostname, port,factory)
+
+ print "factory started"
\ No newline at end of file