mirror of
https://github.com/coddingtonbear/django-mailbox.git
synced 2026-07-09 14:32:34 +02:00
Close connections after we are done with them
This commit is contained in:
parent
592126c439
commit
fbaa378e59
3 changed files with 19 additions and 16 deletions
|
|
@ -470,15 +470,18 @@ class Mailbox(models.Model):
|
|||
connection = self.get_connection()
|
||||
if not connection:
|
||||
return
|
||||
for message in connection.get_message(condition):
|
||||
msg = self.process_incoming_message(message)
|
||||
if msg is not None:
|
||||
yield msg
|
||||
self.last_polling = now()
|
||||
if django.VERSION >= (1, 5): # Django 1.5 introduces update_fields
|
||||
self.save(update_fields=['last_polling'])
|
||||
else:
|
||||
self.save()
|
||||
try:
|
||||
for message in connection.get_message(condition):
|
||||
msg = self.process_incoming_message(message)
|
||||
if msg is not None:
|
||||
yield msg
|
||||
self.last_polling = now()
|
||||
if django.VERSION >= (1, 5): # Django 1.5 introduces update_fields
|
||||
self.save(update_fields=['last_polling'])
|
||||
else:
|
||||
self.save()
|
||||
finally:
|
||||
connection.close()
|
||||
|
||||
@staticmethod
|
||||
def get_new_mail_all_mailboxes(args=None):
|
||||
|
|
|
|||
|
|
@ -9,3 +9,6 @@ class EmailTransport:
|
|||
message = email.message_from_bytes(contents)
|
||||
|
||||
return message
|
||||
|
||||
def close(self):
|
||||
pass
|
||||
|
|
@ -6,13 +6,6 @@ from django.conf import settings
|
|||
from .base import EmailTransport, MessageParseError
|
||||
|
||||
|
||||
# By default, imaplib will raise an exception if it encounters more
|
||||
# than 10k bytes; sometimes users attempt to consume mailboxes that
|
||||
# have a more, and modern computers are skookum-enough to handle just
|
||||
# a *few* more messages without causing any sort of problem.
|
||||
imaplib._MAXLINE = 1000000
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
|
@ -56,6 +49,10 @@ class ImapTransport(EmailTransport):
|
|||
else:
|
||||
self.server.select()
|
||||
|
||||
def close(self):
|
||||
self.server.close()
|
||||
self.server.logout()
|
||||
|
||||
def _get_all_message_ids(self):
|
||||
# Fetch all the message uids
|
||||
response, message_ids = self.server.uid('search', None, 'ALL')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue