From a82f56eac95ca51c48e7a84f11f24c08cca36551 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 4 Dec 2018 00:09:10 +0000 Subject: [PATCH] messages: Actually put message into the queue Signed-off-by: Michael Tremer --- src/backend/messages.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/backend/messages.py b/src/backend/messages.py index 71e898e9..ceb5ffc2 100644 --- a/src/backend/messages.py +++ b/src/backend/messages.py @@ -9,6 +9,7 @@ import textwrap import tornado.gen import tornado.template +from . import accounts from . import misc from .decorators import * @@ -27,6 +28,14 @@ class Messages(misc.Object): return tornado.template.Loader(templates_dir, autoescape=None) + def make_recipient(self, recipient): + # Use the contact instead of the account + if isinstance(recipient, accounts.Account): + recipient = "%s <%s>" % (recipient, recipient.email) + + # Fall back to pass on strings + return recipient + def make_msgid(self): return email.utils.make_msgid("ipfire", domain="ipfire.org") @@ -34,6 +43,18 @@ class Messages(misc.Object): def bounce_email_address(self): return self.settings.get("bounce_email_address") + def _send(self, recipients, message, sender=None, priority=0): + if not recipients: + raise ValueError("Empty list of recipients") + + # Format recipients + recipients = [self.make_recipient(r) for r in recipients] + + res = self.db.get("INSERT INTO messages(message, priority, envelope_recipients) \ + VALUES(%s, %s, %s) RETURNING id", message, priority, recipients) + + logging.debug("Message queued with ID %s" % res.id) + def send(self, recipients, message, priority=None, headers={}): # Convert message from string if not isinstance(message, email.message.Message): @@ -82,6 +103,9 @@ class Messages(misc.Object): # Create a MIMEMultipart message. message = email.mime.multipart.MIMEMultipart() + # Create an alternating multipart message to show HTML or text + alternative = email.mime.multipart.MIMEMultipart("alternative") + for extension, mime_type in (("txt", "plain"), ("html", "html")): try: t = self.template_loader.load("%s.%s" % (template_name, extension)) -- 2.47.3