From 1de255adae7ccc565c5866b43282cb452f5cef66 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 31 Oct 2019 18:59:00 +0000 Subject: [PATCH] Use our internal mail framework for sending newsletter subscriptions Signed-off-by: Michael Tremer --- Makefile.am | 1 + src/backend/messages.py | 6 +++++- src/templates/newsletter/subscribe.txt | 4 ++++ src/web/newsletter.py | 24 +++--------------------- 4 files changed, 13 insertions(+), 22 deletions(-) create mode 100644 src/templates/newsletter/subscribe.txt diff --git a/Makefile.am b/Makefile.am index 08ed643b..2fdbd9ab 100644 --- a/Makefile.am +++ b/Makefile.am @@ -213,6 +213,7 @@ templates_netboot_DATA = \ templates_netbootdir = $(templatesdir)/netboot templates_newsletter_DATA = \ + src/templates/newsletter/subscribe.txt \ src/templates/newsletter/subscribed.html templates_newsletterdir = $(templatesdir)/newsletter diff --git a/src/backend/messages.py b/src/backend/messages.py index b618a951..67d0a863 100644 --- a/src/backend/messages.py +++ b/src/backend/messages.py @@ -71,6 +71,10 @@ class Messages(misc.Object): except KeyError: message.add_header(k, v) + # Read recipients from To: header + if not recipients: + recipients = message.get("To").split(", ") + # Add date if the message doesn't have one already if "Date" not in message: message.add_header("Date", email.utils.formatdate()) @@ -82,7 +86,7 @@ class Messages(misc.Object): # Send the message self._send(recipients, message.as_string(), priority=priority) - def send_template(self, template_name, recipients, + def send_template(self, template_name, recipients=[], sender=None, priority=0, headers={}, **kwargs): """ Send a message based on the given template diff --git a/src/templates/newsletter/subscribe.txt b/src/templates/newsletter/subscribe.txt new file mode 100644 index 00000000..126eff77 --- /dev/null +++ b/src/templates/newsletter/subscribe.txt @@ -0,0 +1,4 @@ +To: ipfire-announce-join@lists.ipfire.org +From: {{ address }} +Sender: no-reply@ipfire.org +Subject: Subscribe diff --git a/src/web/newsletter.py b/src/web/newsletter.py index 28fea101..abf31ce0 100644 --- a/src/web/newsletter.py +++ b/src/web/newsletter.py @@ -18,27 +18,9 @@ class SubscribeHandler(base.BaseHandler): def post(self): address = self.get_argument("email") - # Create an email with us as sender - m = email.mime.text.MIMEText("") - m.add_header("To", "ipfire-announce-join@lists.ipfire.org") - m.add_header("From", address) - m.add_header("Sender", "no-reply@ipfire.org") - m.add_header("Subject", "Subscribe") - - logging.debug("Sending email:\n%s" % m.as_string()) - - # Call sendmail - p = tornado.process.Subprocess(["sendmail", "-t"], - stdin=tornado.process.Subprocess.STREAM) - - # Pipe the email into sendmail - yield tornado.gen.Task(p.stdin.write, m.as_bytes()) - - # Close standard input - p.stdin.close() - - # Wait until sendmail is done - ret = yield p.wait_for_exit() + with self.db.transaction(): + self.backend.messages.send_template( + "newsletter/subscribe", address=address) logging.info("%s has subscribed to the newsletter" % address) -- 2.47.3