diff --git a/build/lib/django_mailbox/models.py b/build/lib/django_mailbox/models.py index c7c03f3..cbd3d18 100644 --- a/build/lib/django_mailbox/models.py +++ b/build/lib/django_mailbox/models.py @@ -251,6 +251,7 @@ class Mailbox(models.Model): conn = Office365Transport( self.location, self.username, + archive=self.archive, folder=self.folder ) conn.connect(self.client_id, self.client_secret, self.tenant_id) diff --git a/build/lib/django_mailbox/transports/office365.py b/build/lib/django_mailbox/transports/office365.py index 47c86d6..bca9b74 100644 --- a/build/lib/django_mailbox/transports/office365.py +++ b/build/lib/django_mailbox/transports/office365.py @@ -9,7 +9,7 @@ logger = logging.getLogger(__name__) class Office365Transport(EmailTransport): def __init__( - self, hostname, username, folder=None + self, hostname, username, archive='', folder=None ): self.integration_testing_subject = getattr( settings, @@ -18,6 +18,7 @@ class Office365Transport(EmailTransport): ) self.hostname = hostname self.username = username + self.archive = archive self.folder = folder def connect(self, client_id, client_secret, tenant_id): @@ -39,6 +40,9 @@ class Office365Transport(EmailTransport): self.mailbox_folder = self.mailbox.get_folder(folder_name=self.folder) def get_message(self, condition=None): + if self.archive: + self.mailbox.create_child_folder(self.archive) + for message in self.mailbox.get_messages(order_by='receivedDateTime'): try: mime_content = message.get_mime_content() @@ -50,5 +54,10 @@ class Office365Transport(EmailTransport): yield message except MessageParseError: continue + + if self.archive: + message.copy(self.archive) + + message.delete() return diff --git a/django_mailbox/transports/office365.py b/django_mailbox/transports/office365.py index 2c137b3..bca9b74 100644 --- a/django_mailbox/transports/office365.py +++ b/django_mailbox/transports/office365.py @@ -9,7 +9,7 @@ logger = logging.getLogger(__name__) class Office365Transport(EmailTransport): def __init__( - self, hostname, username, folder=None + self, hostname, username, archive='', folder=None ): self.integration_testing_subject = getattr( settings, @@ -18,6 +18,7 @@ class Office365Transport(EmailTransport): ) self.hostname = hostname self.username = username + self.archive = archive self.folder = folder def connect(self, client_id, client_secret, tenant_id): @@ -39,6 +40,9 @@ class Office365Transport(EmailTransport): self.mailbox_folder = self.mailbox.get_folder(folder_name=self.folder) def get_message(self, condition=None): + if self.archive: + self.mailbox.create_child_folder(self.archive) + for message in self.mailbox.get_messages(order_by='receivedDateTime'): try: mime_content = message.get_mime_content() @@ -47,12 +51,13 @@ class Office365Transport(EmailTransport): if condition and not condition(message): continue - #TODO: implement archive function - yield message except MessageParseError: continue - # TODO: delete all messages + if self.archive: + message.copy(self.archive) + + message.delete() return diff --git a/readme.rst b/readme.rst index 50342d6..f03459e 100644 --- a/readme.rst +++ b/readme.rst @@ -8,7 +8,7 @@ :target: https://pypi.python.org/pypi/django-mailbox -Easily ingest messages from POP3, IMAP, Office365 or local mailboxes into your Django application. +Easily ingest messages from POP3, IMAP, Office365 API or local mailboxes into your Django application. This app allows you to either ingest e-mail content from common e-mail services (as long as the service provides POP3 or IMAP support), or directly receive e-mail messages from ``stdin`` (for locally processing messages from Postfix or Exim4).