From 1be453924620fee6914ec74d17598ab68b5f4f29 Mon Sep 17 00:00:00 2001 From: Adam Coddington Date: Sat, 27 Oct 2012 18:51:41 -0700 Subject: [PATCH] Adding functionality allowing one to easily send replies to existing messages. --- django_mailbox/models.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/django_mailbox/models.py b/django_mailbox/models.py index a737ae9..77ea5b1 100755 --- a/django_mailbox/models.py +++ b/django_mailbox/models.py @@ -106,13 +106,25 @@ class Mailbox(models.Model): return conn def process_incoming_message(self, message): + msg = self._process_message(self, message) + msg.outgoing = False + msg.save() + message_received.send(sender=self, message=msg) + return msg + + def record_outgoing_message(self, message): + msg = self._process_message(self, message) + msg.outgoing = True + msg.save() + return msg + + def _process_message(self, message): msg = Message() msg.mailbox = self msg.subject = message['subject'][0:255] msg.message_id = message['message-id'][0:255] msg.from_header = message['from'] msg.to_header = message['to'] - msg.outgoing = False msg.body = message.as_string() if message['in-reply-to']: try: @@ -129,7 +141,6 @@ class Mailbox(models.Model): ) except IndexError: pass - message_received.send(sender=self, message=msg) return msg def get_new_mail(self): @@ -226,6 +237,18 @@ class Message(models.Model): ) return addresses + def reply(self, message): + message.extra_headers['In-Reply-To'] = self.message_id + message.extra_headers['References'] = self.message_id + for reference in self.references: + message.extra_headers['References'].append( + ' %s' % reference.message_id + ) + message.send() + return self.mailbox.record_outgoing_message( + message + ) + def get_email_object(self): return email.message_from_string(self.body)