From 0ee5efede9f5d43107c68df26eeffb4f11082d4a Mon Sep 17 00:00:00 2001 From: Steeve Chailloux Date: Sun, 1 May 2016 19:52:34 +0200 Subject: [PATCH] add imaps STARTTLS support using +tls --- django_mailbox/models.py | 6 ++++++ django_mailbox/transports/imap.py | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/django_mailbox/models.py b/django_mailbox/models.py index 6b76d26..abe53ff 100644 --- a/django_mailbox/models.py +++ b/django_mailbox/models.py @@ -193,6 +193,11 @@ class Mailbox(models.Model): """Returns whether or not this mailbox's connection uses SSL.""" return '+ssl' in self._protocol_info.scheme.lower() + @property + def use_tls(self): + """Returns whether or not this mailbox's connection uses STARTTLS.""" + return '+tls' in self._protocol_info.scheme.lower() + @property def archive(self): """Returns (if specified) the folder to archive messages to.""" @@ -223,6 +228,7 @@ class Mailbox(models.Model): self.location, port=self.port if self.port else None, ssl=self.use_ssl, + tls=self.use_tls, archive=self.archive, folder=self.folder ) diff --git a/django_mailbox/transports/imap.py b/django_mailbox/transports/imap.py index 6f0f5d1..2c449c3 100644 --- a/django_mailbox/transports/imap.py +++ b/django_mailbox/transports/imap.py @@ -18,7 +18,8 @@ logger = logging.getLogger(__name__) class ImapTransport(EmailTransport): def __init__( - self, hostname, port=None, ssl=False, archive='', folder=None + self, hostname, port=None, ssl=False, tls=False, + archive='', folder=None, ): self.max_message_size = getattr( settings, @@ -34,6 +35,7 @@ class ImapTransport(EmailTransport): self.port = port self.archive = archive self.folder = folder + self.tls = tls if ssl: self.transport = imaplib.IMAP4_SSL if not self.port: @@ -45,6 +47,8 @@ class ImapTransport(EmailTransport): def connect(self, username, password): self.server = self.transport(self.hostname, self.port) + if self.tls: + self.server.starttls() typ, msg = self.server.login(username, password) if self.folder: