1
0
Fork 0

Added storing original message in file

This commit is contained in:
Adam Dobrawy 2015-03-15 02:16:27 +01:00
parent 552e033655
commit 42d891bd8d
3 changed files with 39 additions and 1 deletions

View 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,
),
]

View file

@ -32,7 +32,6 @@ from django_mailbox.transports import Pop3Transport, ImapTransport, \
MaildirTransport, MboxTransport, BabylTransport, MHTransport, \
MMDFTransport, GmailImapTransport
logger = logging.getLogger(__name__)
@ -72,6 +71,12 @@ ATTACHMENT_INTERPOLATION_HEADER = getattr(
'X-Django-Mailbox-Interpolate-Attachment'
)
STORE_ORIGINAL_MESSAGE = getattr(
settings,
'DJANGO_MAILBOX_STORE_ORIGINAL_MESSAGE',
False
)
class ActiveMailboxManager(models.Manager):
def get_queryset(self):
@ -326,6 +331,8 @@ class Mailbox(models.Model):
def _process_message(self, message):
msg = Message()
if STORE_ORIGINAL_MESSAGE:
msg.eml.save('message.eml', ContentFile(message), save=False)
msg.mailbox = self
if 'subject' in message:
msg.subject = convert_header_to_unicode(message['subject'])[0:255]
@ -450,6 +457,11 @@ class Message(models.Model):
null=True,
)
eml = models.FileField(
_(u'Message as a file'),
null=True,
help_text=_(u'Original full content of message')
)
objects = models.Manager()
unread_messages = UnreadMessageManager()
incoming_messages = IncomingMessageManager()
@ -599,6 +611,8 @@ class Message(models.Model):
def get_email_object(self):
""" 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()
if six.PY3:
flat = email.message_from_bytes(body)

View file

@ -66,3 +66,7 @@ Settings
* If this is set, it will be read as a number of
bytes. Any messages above that size will not be
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