import tornado.gen
import tornado.template
+from . import accounts
from . import misc
from .decorators import *
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")
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):
# 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))