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:
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))