38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
from imaplib import IMAP4, IMAP4_SSL
|
|
|
|
import logging
|
|
import ssl as pythonssllib
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class ImapTransport:
|
|
|
|
def __init__(self, hostname, port=None, ssl=True, ssl_context=None, starttls=False):
|
|
self.hostname = hostname
|
|
|
|
if ssl:
|
|
self.port = port or 993
|
|
if ssl_context is None:
|
|
ssl_context = pythonssllib.create_default_context()
|
|
self.server = IMAP4_SSL(self.hostname, self.port, ssl_context=ssl_context)
|
|
else:
|
|
self.port = port or 143
|
|
self.server = IMAP4(self.hostname, self.port)
|
|
|
|
if starttls:
|
|
self.server.starttls()
|
|
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")
|
|
return self.server.list()
|
|
|
|
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))
|
|
return self.server
|