forked from mirror/django-mailbox
Added storing original message in file
This commit is contained in:
parent
552e033655
commit
42d891bd8d
3 changed files with 39 additions and 1 deletions
20
django_mailbox/migrations/0002_add_eml_to_message.py
Normal file
20
django_mailbox/migrations/0002_add_eml_to_message.py
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('django_mailbox', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='message',
|
||||||
|
name='eml',
|
||||||
|
field=models.FileField(help_text='Original full content of message', upload_to=b'', null=True, verbose_name='Message as a file'),
|
||||||
|
preserve_default=True,
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -32,7 +32,6 @@ from django_mailbox.transports import Pop3Transport, ImapTransport, \
|
||||||
MaildirTransport, MboxTransport, BabylTransport, MHTransport, \
|
MaildirTransport, MboxTransport, BabylTransport, MHTransport, \
|
||||||
MMDFTransport, GmailImapTransport
|
MMDFTransport, GmailImapTransport
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -72,6 +71,12 @@ ATTACHMENT_INTERPOLATION_HEADER = getattr(
|
||||||
'X-Django-Mailbox-Interpolate-Attachment'
|
'X-Django-Mailbox-Interpolate-Attachment'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
STORE_ORIGINAL_MESSAGE = getattr(
|
||||||
|
settings,
|
||||||
|
'DJANGO_MAILBOX_STORE_ORIGINAL_MESSAGE',
|
||||||
|
False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ActiveMailboxManager(models.Manager):
|
class ActiveMailboxManager(models.Manager):
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
|
|
@ -326,6 +331,8 @@ class Mailbox(models.Model):
|
||||||
|
|
||||||
def _process_message(self, message):
|
def _process_message(self, message):
|
||||||
msg = Message()
|
msg = Message()
|
||||||
|
if STORE_ORIGINAL_MESSAGE:
|
||||||
|
msg.eml.save('message.eml', ContentFile(message), save=False)
|
||||||
msg.mailbox = self
|
msg.mailbox = self
|
||||||
if 'subject' in message:
|
if 'subject' in message:
|
||||||
msg.subject = convert_header_to_unicode(message['subject'])[0:255]
|
msg.subject = convert_header_to_unicode(message['subject'])[0:255]
|
||||||
|
|
@ -450,6 +457,11 @@ class Message(models.Model):
|
||||||
null=True,
|
null=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
eml = models.FileField(
|
||||||
|
_(u'Message as a file'),
|
||||||
|
null=True,
|
||||||
|
help_text=_(u'Original full content of message')
|
||||||
|
)
|
||||||
objects = models.Manager()
|
objects = models.Manager()
|
||||||
unread_messages = UnreadMessageManager()
|
unread_messages = UnreadMessageManager()
|
||||||
incoming_messages = IncomingMessageManager()
|
incoming_messages = IncomingMessageManager()
|
||||||
|
|
@ -599,6 +611,8 @@ class Message(models.Model):
|
||||||
|
|
||||||
def get_email_object(self):
|
def get_email_object(self):
|
||||||
""" Returns an `email.message.Message` instance for this message."""
|
""" Returns an `email.message.Message` instance for this message."""
|
||||||
|
if self.eml:
|
||||||
|
return email.message_from_file(Message.objects.last().eml)
|
||||||
body = self.get_body()
|
body = self.get_body()
|
||||||
if six.PY3:
|
if six.PY3:
|
||||||
flat = email.message_from_bytes(body)
|
flat = email.message_from_bytes(body)
|
||||||
|
|
|
||||||
|
|
@ -66,3 +66,7 @@ Settings
|
||||||
* If this is set, it will be read as a number of
|
* If this is set, it will be read as a number of
|
||||||
bytes. Any messages above that size will not be
|
bytes. Any messages above that size will not be
|
||||||
downloaded. ``2000000`` is 2 Megabytes.
|
downloaded. ``2000000`` is 2 Megabytes.
|
||||||
|
* ``DJANGO_MAILBOX_STORE_ORIGINAL_MESSAGE``
|
||||||
|
* Default: ``False``
|
||||||
|
* Type: ``boolean``
|
||||||
|
* Controls whether or not we store original messages in ``eml`` field
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue