SMTL

Die Stadtmeistersteilerliste und das Anmeldeformular - SK Langen e.V.
git clone git://git.oshgnacknak.de/SMTL.git
Log | Files | Refs | README

commit cc945402ec3150eb38d79fca46c6fd1a6ae2fcde
parent 26a4453dd8a2faffe39c42a5368e860cbb0537a0
Author: Oshgnacknak <osh@oshgnacknak.de>
Date:   Sun, 18 Aug 2019 13:25:05 +0200

Sending emails once somebody signs up

Diffstat:
Mconfig.py.dist | 24+++++++++++++++++-------
Asmtl/email.py | 36++++++++++++++++++++++++++++++++++++
Msmtl/routes/api.py | 6+++++-
3 files changed, 58 insertions(+), 8 deletions(-)

diff --git a/config.py.dist b/config.py.dist @@ -6,13 +6,23 @@ app_config = { 'SECRET_KEY': 'some_key', - # db uri - # memory - 'SQLALCHEMY_DATABASE_URI': 'sqlite:///:memory:', - # sqlite - #app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///../db.db' - # mysql - #app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@server.site.com/database' + # db uri + # memory + 'SQLALCHEMY_DATABASE_URI': 'sqlite:///:memory:', + # sqlite + #app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///../db.db' + # mysql + #app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@server.site.com/database' +} + +# If this is filled this server will +# send an email each time somebody signs up. +# To disable leave the dict empty +email_config = { + 'HOST': 'some_host', + 'PORT': 587, + 'ADDR': 'some_mail', + 'PASSWORD': 'some_password' } run_config = { diff --git a/smtl/email.py b/smtl/email.py @@ -0,0 +1,36 @@ +import smtplib +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from config import email_config + + +class EMail: + def __init__(self, host, port=None, addr=''): + self.server = smtplib.SMTP(host, port or 587) + self.addr = addr + + def login(self, user=None, password=''): + self.server.login(user or self.addr, password) + + def send(self, from_addr=None, to_addr=None, subject='', body=''): + msg = MIMEMultipart() + msg['From'] = from_addr or self.addr + msg['To'] = to_addr or self.addr + msg['Subject'] = subject + msg.attach(MIMEText(body)) + + self.server.sendmail(msg['From'], msg['To'], msg.as_string()) + + +if email_config: + default_mail = EMail( + host=email_config['HOST'], + port=email_config.get('PORT'), + addr=email_config.get('ADDR') + ) + default_mail.login( + user=email_config.get('USER'), + password=email_config['PASSWORD'] + ) +else: + default_mail = None diff --git a/smtl/routes/api.py b/smtl/routes/api.py @@ -4,6 +4,7 @@ from smtl.signup_form import SignupForm from smtl.app import db, cache from smtl.models.player import Player, Gender from smtl.logging import logger +from smtl.email import default_mail blue_print = Blueprint('api', __name__) @@ -20,7 +21,10 @@ def add_player(): ) try: p = save_player(form) - logger.info(request.remote_addr + ' added ' + str(p)) + msg = request.remote_addr + ' added ' + str(p) + logger.info(msg) + if default_mail: + default_mail.send(subject=msg, body=msg) return jsonify(status='success', message=f'{p.name} wurde hinzugefĆ¼gt.') except SQLAlchemyError as e: logger.error('Database Error: ' + str(e))