From dcb26e97b5223e343988b1fa3ee97f9a0313f242 Mon Sep 17 00:00:00 2001 From: Adam Coddington Date: Sun, 28 Oct 2012 11:29:56 -0700 Subject: [PATCH] Set message-Id during reply process; build message references properly. --- django_mailbox/models.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/django_mailbox/models.py b/django_mailbox/models.py index 0993b0b..e2a02e1 100755 --- a/django_mailbox/models.py +++ b/django_mailbox/models.py @@ -1,8 +1,10 @@ import email +from email.utils import format_date import rfc822 import urllib import urlparse +from django.core.mail.message import make_msgid from django.db import models from django_mailbox.transports import Pop3Transport, ImapTransport,\ MaildirTransport, MboxTransport, BabylTransport, MHTransport, \ @@ -238,13 +240,24 @@ class Message(models.Model): return addresses def reply(self, message): + """Sends a message as a reply to this message instance. + + Although Django's e-mail processing will set both Message-ID + and Date upon generating the e-mail message, we will not be able + to retrieve that information through normal channels, so we must + pre-set it. + + """ + message.extra_headers['Message-ID'] = make_msg_id() + message.extra_headers['Date'] = format_date() message.extra_headers['In-Reply-To'] = self.message_id - message.extra_headers['References'] = self.message_id + references = [self.message_id] for reference in self.references.all(): - message.extra_headers['References'].append( + references.append( ' %s' % reference.message_id ) - message.send() + message.extra_headers['References'] = '\n'.join(references) + message = message.send() return self.mailbox.record_outgoing_message( email.message_from_string( message.message().as_string()