1
0
Fork 0

archive and delete

This commit is contained in:
Pietro Mingo 2022-08-01 12:39:09 +02:00
parent 1f6014918c
commit b39299692a
4 changed files with 21 additions and 6 deletions

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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).