use local mail daemon for confirmation links

This commit is contained in:
Thomas L 2018-03-29 00:57:17 +02:00
parent 2b6b3a2263
commit 4850860f82
2 changed files with 25 additions and 16 deletions

View file

@ -5,9 +5,8 @@ from config import config
from db import db
import logging
import tweepy
import sendmail
from sendmail import sendmail
from session import SessionPlugin
import smtplib
from mastodon import Mastodon
@ -28,20 +27,18 @@ def register_post():
if db.by_email(email):
return dict(error='Email address already in use.')
# send confirmation mail
confirm_link = request.url + "/../confirm/" + db.user_token(email, password)
send_confirmation_mail(confirm_link, email)
sendmail(
email,
"[Ticketfrei] Confirm your account",
"Complete your registration here: %s://%s/confirm/%s" % (
request.urlparts.scheme,
request.urlparts.netloc,
db.user_token(email, password)
)
)
return dict(info='Confirmation mail sent.')
def send_confirmation_mail(confirm_link, email):
m = sendmail.Mailer()
try:
m.send("Complete your registration here: " + confirm_link, email,
"[Ticketfrei] Confirm your account")
except smtplib.SMTPRecipientsRefused:
return "Please enter a valid E-Mail address."
@get('/confirm/<token>')
@view('template/propaganda.tpl')
def confirm(token):

View file

@ -1,11 +1,12 @@
#!/usr/bin/env python3
import smtplib
import ssl
from config import config
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from getpass import getuser
import smtplib
from socket import getfqdn
import ssl
class Mailer(object):
@ -63,6 +64,17 @@ class Mailer(object):
return "Sent mail to " + recipient + ": " + subject
def sendmail(to, subject, body):
msg = MIMEMultipart()
msg['From'] = '%s@%s' % (getuser(), getfqdn())
msg['To'] = to
msg['Subject'] = subject
msg.attach(MIMEText(body))
with smtplib.SMTP('localhost') as smtp:
smtp.send_message(msg)
# For testing:
if __name__ == '__main__':
m = Mailer()