Skip to content

Commit

Permalink
Merge pull request #69 from Intevation/master
Browse files Browse the repository at this point in the history
Check SSL-Context for IMAP4_SSL connections
  • Loading branch information
martinrusev committed Jun 7, 2016
2 parents 9dd4913 + ad085d9 commit cb2cde3
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
6 changes: 4 additions & 2 deletions imbox/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@

class Imbox(object):

def __init__(self, hostname, username=None, password=None, ssl=True, port=None):
def __init__(self, hostname, username=None, password=None, ssl=True,
port=None, ssl_context=None):

self.server = ImapTransport(hostname, ssl=ssl, port=port)
self.server = ImapTransport(hostname, ssl=ssl, port=port,
ssl_context=None)
self.hostname = hostname
self.username = username
self.password = password
Expand Down
17 changes: 13 additions & 4 deletions imbox/imap.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
from imaplib import IMAP4, IMAP4_SSL

import logging
import ssl as pythonssllib

logger = logging.getLogger(__name__)


class ImapTransport(object):

def __init__(self, hostname, port=None, ssl=False):
def __init__(self, hostname, port=None, ssl=True, ssl_context=None):
self.hostname = hostname
self.port = port
kwargs = {}

if ssl:
self.transport = IMAP4_SSL
if not self.port:
self.port = 993
if ssl_context is None:
ssl_context = pythonssllib.create_default_context()
kwargs["ssl_context"] = ssl_context
else:
self.transport = IMAP4
if not self.port:
self.port = 143

self.server = self.transport(self.hostname, self.port)
logger.debug("Created IMAP4 transport for {host}:{port}".format(host=self.hostname, port=self.port))
self.server = self.transport(self.hostname, self.port, **kwargs)
logger.debug("Created IMAP4 transport for {host}:{port}"
.format(host=self.hostname, port=self.port))

def list_folders(self):
logger.debug("List all folders in mailbox")
Expand All @@ -28,5 +36,6 @@ def list_folders(self):
def connect(self, username, password):
self.server.login(username, password)
self.server.select()
logger.debug("Logged into server {} and selected mailbox 'INBOX'".format(self.hostname))
logger.debug("Logged into server {} and selected mailbox 'INBOX'"
.format(self.hostname))
return self.server

0 comments on commit cb2cde3

Please sign in to comment.