Commit de549fb2 authored by Lukas Fleischer's avatar Lukas Fleischer
Browse files

Support smtplib for sending emails



Support mail delivery without a local MTA. Instead, an SMTP server can
now be configured using the smtp-server option in the [notifications]
section. In order to use this option, the value of the sendmail option
must be empty.
Signed-off-by: Lukas Fleischer's avatarLukas Fleischer <lfleischer@archlinux.org>
parent 3f2654e7
#!/usr/bin/env python3
import email.mime.text
import email.utils
import smtplib
import subprocess
import sys
import textwrap
......@@ -63,7 +65,6 @@ class Notification:
return body.rstrip()
def send(self):
sendmail = aurweb.config.get('notifications', 'sendmail')
sender = aurweb.config.get('notifications', 'sender')
reply_to = aurweb.config.get('notifications', 'reply-to')
reason = self.__class__.__name__
......@@ -79,13 +80,26 @@ 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())
sendmail = aurweb.config.get('notifications', 'sendmail')
if sendmail:
# send email using the sendmail binary specified in the
# configuration file
p = subprocess.Popen([sendmail, '-t', '-oi'],
stdin=subprocess.PIPE)
p.communicate(msg.as_bytes())
else:
# send email using smtplib; no local MTA required
server_addr = aurweb.config.get('notifications', 'smtp-server')
server = smtplib.SMTP(server_addr)
server.set_debuglevel(0)
server.sendmail(sender, recipient, msg.as_bytes())
server.quit()
class ResetKeyNotification(Notification):
......
......@@ -47,7 +47,8 @@ window_length = 86400
[notifications]
notify-cmd = /usr/local/bin/aurweb-notify
sendmail = /usr/bin/sendmail
sendmail =
smtp-server = localhost
sender = notify@aur.archlinux.org
reply-to = noreply@aur.archlinux.org
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment