forked from mirror/django-mailbox
Merge pull request #1 from ad-m/original_eml
Added storing original message in file
This commit is contained in:
commit
aba55d3356
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, \
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue