1
0
Fork 1
mirror of https://github.com/coddingtonbear/django-mailbox.git synced 2026-07-09 22:38:19 +02:00

new setting to delete email from server; don't store duplicate emails;

This commit is contained in:
Tre Hom 2018-04-24 12:12:41 -04:00
parent 201f568750
commit 5bdd3703f1
3 changed files with 21 additions and 4 deletions

View file

@ -2,13 +2,18 @@ import logging
from django.core.management.base import BaseCommand
from django_mailbox.models import Mailbox
from django_mailbox.models import Mailbox, Message
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
def message_not_in_database(message):
if Message.objects.filter(message_id__iexact=message['message-id']).exists():
return False
return True
class Command(BaseCommand):
def handle(self, *args, **options):
mailboxes = Mailbox.active_mailboxes.all()
@ -21,7 +26,8 @@ class Command(BaseCommand):
'Gathering messages for %s',
mailbox.name
)
messages = mailbox.get_new_mail()
messages = mailbox.get_new_mail(condition=message_not_in_database)
for message in messages:
logger.info(
'Received %s (from %s)',

View file

@ -2,6 +2,8 @@ import six
from poplib import POP3, POP3_SSL
from django_mailbox import utils
from .base import EmailTransport, MessageParseError
@ -29,6 +31,8 @@ class Pop3Transport(EmailTransport):
return '\r\n'.join(message_lines)
def get_message(self, condition=None):
settings = utils.get_settings()
message_count = len(self.server.list()[1])
for i in range(message_count):
try:
@ -43,6 +47,8 @@ class Pop3Transport(EmailTransport):
yield message
except MessageParseError:
continue
self.server.dele(i + 1)
if settings['delete_original_message']:
self.server.dele(i + 1)
self.server.quit()
return

View file

@ -68,6 +68,11 @@ def get_settings():
settings,
'DJANGO_MAILBOX_default_charset',
'iso8859-1',
),
'delete_original_message': getattr(
settings,
'DJANGO_MAILBOX_DELETE_ORIGINAL_MESSAGE',
True
)
}