Use smtplib for sending emails

Message ID 20200207122507.81550-1-lfleischer@archlinux.org
State New
Headers show
Series Use smtplib for sending emails | expand

Commit Message

Lukas Fleischer Feb. 7, 2020, 12:25 p.m. UTC
Support mail delivery without a local MTA. Instead, an SMTP server can
now be configured using the smtp-server option in the [notifications]
section.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
---
 aurweb/scripts/notify.py | 13 ++++++++-----
 conf/config.defaults     |  2 +-
 2 files changed, 9 insertions(+), 6 deletions(-)

Patch

diff --git a/aurweb/scripts/notify.py b/aurweb/scripts/notify.py
index b0f218b..35d2701 100755
--- a/aurweb/scripts/notify.py
+++ b/aurweb/scripts/notify.py
@@ -1,7 +1,8 @@ 
 #!/usr/bin/env python3
 
 import email.mime.text
-import subprocess
+import email.utils
+import smtplib
 import sys
 import textwrap
 
@@ -63,7 +64,7 @@  class Notification:
         return body.rstrip()
 
     def send(self):
-        sendmail = aurweb.config.get('notifications', 'sendmail')
+        server_addr = aurweb.config.get('notifications', 'smtp-server')
         sender = aurweb.config.get('notifications', 'sender')
         reply_to = aurweb.config.get('notifications', 'reply-to')
         reason = self.__class__.__name__
@@ -79,13 +80,15 @@  class Notification:
             msg['Reply-to'] = reply_to
             msg['To'] = to
             msg['X-AUR-Reason'] = reason
+            msg['Date'] = email.utils.formatdate(localtime=True)
 
             for key, value in self.get_headers().items():
                 msg[key] = value
 
-            p = subprocess.Popen([sendmail, '-t', '-oi'],
-                                 stdin=subprocess.PIPE)
-            p.communicate(msg.as_bytes())
+            server = smtplib.SMTP(server_addr)
+            server.set_debuglevel(1)
+            server.sendmail(sender, recipient, msg.as_bytes())
+            server.quit()
 
 
 class ResetKeyNotification(Notification):
diff --git a/conf/config.defaults b/conf/config.defaults
index c519eae..af85ce8 100644
--- a/conf/config.defaults
+++ b/conf/config.defaults
@@ -47,7 +47,7 @@  window_length = 86400
 
 [notifications]
 notify-cmd = /usr/local/bin/aurweb-notify
-sendmail = /usr/bin/sendmail
+smtp-server = orion.archlinux.org
 sender = notify@aur.archlinux.org
 reply-to = noreply@aur.archlinux.org