forked from mirror/django-mailbox
archive and delete
This commit is contained in:
parent
1f6014918c
commit
b39299692a
4 changed files with 21 additions and 6 deletions
|
|
@ -251,6 +251,7 @@ class Mailbox(models.Model):
|
||||||
conn = Office365Transport(
|
conn = Office365Transport(
|
||||||
self.location,
|
self.location,
|
||||||
self.username,
|
self.username,
|
||||||
|
archive=self.archive,
|
||||||
folder=self.folder
|
folder=self.folder
|
||||||
)
|
)
|
||||||
conn.connect(self.client_id, self.client_secret, self.tenant_id)
|
conn.connect(self.client_id, self.client_secret, self.tenant_id)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class Office365Transport(EmailTransport):
|
class Office365Transport(EmailTransport):
|
||||||
def __init__(
|
def __init__(
|
||||||
self, hostname, username, folder=None
|
self, hostname, username, archive='', folder=None
|
||||||
):
|
):
|
||||||
self.integration_testing_subject = getattr(
|
self.integration_testing_subject = getattr(
|
||||||
settings,
|
settings,
|
||||||
|
|
@ -18,6 +18,7 @@ class Office365Transport(EmailTransport):
|
||||||
)
|
)
|
||||||
self.hostname = hostname
|
self.hostname = hostname
|
||||||
self.username = username
|
self.username = username
|
||||||
|
self.archive = archive
|
||||||
self.folder = folder
|
self.folder = folder
|
||||||
|
|
||||||
def connect(self, client_id, client_secret, tenant_id):
|
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)
|
self.mailbox_folder = self.mailbox.get_folder(folder_name=self.folder)
|
||||||
|
|
||||||
def get_message(self, condition=None):
|
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'):
|
for message in self.mailbox.get_messages(order_by='receivedDateTime'):
|
||||||
try:
|
try:
|
||||||
mime_content = message.get_mime_content()
|
mime_content = message.get_mime_content()
|
||||||
|
|
@ -50,5 +54,10 @@ class Office365Transport(EmailTransport):
|
||||||
yield message
|
yield message
|
||||||
except MessageParseError:
|
except MessageParseError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if self.archive:
|
||||||
|
message.copy(self.archive)
|
||||||
|
|
||||||
|
message.delete()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class Office365Transport(EmailTransport):
|
class Office365Transport(EmailTransport):
|
||||||
def __init__(
|
def __init__(
|
||||||
self, hostname, username, folder=None
|
self, hostname, username, archive='', folder=None
|
||||||
):
|
):
|
||||||
self.integration_testing_subject = getattr(
|
self.integration_testing_subject = getattr(
|
||||||
settings,
|
settings,
|
||||||
|
|
@ -18,6 +18,7 @@ class Office365Transport(EmailTransport):
|
||||||
)
|
)
|
||||||
self.hostname = hostname
|
self.hostname = hostname
|
||||||
self.username = username
|
self.username = username
|
||||||
|
self.archive = archive
|
||||||
self.folder = folder
|
self.folder = folder
|
||||||
|
|
||||||
def connect(self, client_id, client_secret, tenant_id):
|
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)
|
self.mailbox_folder = self.mailbox.get_folder(folder_name=self.folder)
|
||||||
|
|
||||||
def get_message(self, condition=None):
|
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'):
|
for message in self.mailbox.get_messages(order_by='receivedDateTime'):
|
||||||
try:
|
try:
|
||||||
mime_content = message.get_mime_content()
|
mime_content = message.get_mime_content()
|
||||||
|
|
@ -47,12 +51,13 @@ class Office365Transport(EmailTransport):
|
||||||
if condition and not condition(message):
|
if condition and not condition(message):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
#TODO: implement archive function
|
|
||||||
|
|
||||||
yield message
|
yield message
|
||||||
except MessageParseError:
|
except MessageParseError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# TODO: delete all messages
|
if self.archive:
|
||||||
|
message.copy(self.archive)
|
||||||
|
|
||||||
|
message.delete()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
:target: https://pypi.python.org/pypi/django-mailbox
|
: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),
|
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).
|
or directly receive e-mail messages from ``stdin`` (for locally processing messages from Postfix or Exim4).
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue