diff options
| author | Alon Levy <alon@pobox.com> | 2015-01-13 15:12:37 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-01-13 15:13:28 +0200 |
| commit | 3442b83dbc1b67b01cd43c6fec122eebea8d03cf (patch) | |
| tree | acccc245aa8f440fd6da7a200567eea201fcfae7 /src | |
| parent | 6c4ddbdaf3b58415b58b7d351af14fc37aad84b3 (diff) | |
server/feedback: get rid of flask-mail; left todo: filenames for attachments
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/rz_config.js | 2 | ||||
| -rw-r--r-- | src/server/rz_feedback.py | 2 | ||||
| -rw-r--r-- | src/server/rz_mail.py | 40 | ||||
| -rw-r--r-- | src/server/rz_server.py | 8 |
4 files changed, 37 insertions, 15 deletions
diff --git a/src/client/rz_config.js b/src/client/rz_config.js index 858fbf18..df283f41 100644 --- a/src/client/rz_config.js +++ b/src/client/rz_config.js @@ -5,7 +5,7 @@ define(function() { 'rz_server_host': 'rhizi.local', 'rz_server_port': '8080', 'backend_enabled': true, - 'backend__maintain_ws_connection': false, + 'backend__maintain_ws_connection': true, 'feedback_url': '/feedback', }; }); diff --git a/src/server/rz_feedback.py b/src/server/rz_feedback.py index 7c0f8b0b..071be4dc 100644 --- a/src/server/rz_feedback.py +++ b/src/server/rz_feedback.py @@ -46,7 +46,7 @@ watching URL: Left note: %(note)s """ % dict(url=url, note=note, user=session_user if session_user else "Not logged in") - send_message(recipients=[current_app.rz_config.FEEDBACK_RECIPIENT], + send_message(recipients=[current_app.rz_config.feedback_recipient], subject="User feedback from Rhizi", body=feedback_body, attachments=[ diff --git a/src/server/rz_mail.py b/src/server/rz_mail.py index e512ed91..4addc9f2 100644 --- a/src/server/rz_mail.py +++ b/src/server/rz_mail.py @@ -1,19 +1,35 @@ -from flask_mail import Mail, Message +import smtplib +from os.path import basename +from email.mime.base import MIMEBase +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from email.utils import COMMASPACE, formatdate +from email import Encoders -mail = None - -def init_mail(webapp): - global mail - mail = Mail(webapp) +from flask import current_app def send_message(recipients, subject, attachments, body): """ - attachments is a list of tuples (filename, data) - libmagic is used to guess the mimetype + attachments is a list of tuples (filename, mimetype, data) """ - msg = Message(subject, recipients=recipients) - msg.body = body + assert isinstance(recipients, list) + send_from = current_app.rz_config.mail_default_sender + msg = MIMEMultipart( + From=send_from, + To=COMMASPACE.join(recipients), + Date=formatdate(localtime=True), + Subject=subject + ) + msg.attach(MIMEText(body)) + for filename, mimetype, data in attachments: - msg.attach(filename=filename, content_type=mimetype, data=data) - mail.send(msg) + maintype, subtype = mimetype.split('/') + part = MIMEBase(maintype, subtype) + part.set_payload(data) + Encoders.encode_base64(part) + part.add_header('Content_Disposition', 'attachment; filename="%s"' % filename) + msg.attach(part) + smtp = smtplib.SMTP(current_app.rz_config.mail_hostname) + smtp.sendmail(send_from, recipients, msg.as_string()) + smtp.close() diff --git a/src/server/rz_server.py b/src/server/rz_server.py index 648bfe9c..be190b9a 100644 --- a/src/server/rz_server.py +++ b/src/server/rz_server.py @@ -50,6 +50,13 @@ class Config(object): cfg['static_url_path'] = '/static' cfg['htpasswd_path'] = os.path.join(cfg['config_dir'], 'htpasswd') + # Mail settings + cfg['mail_hostname'] = 'localhost' + cfg['mail_port'] = 25 + + # User feedback settings + cfg['feedback_recipient'] = 'feedback@localhost' + # Flask keys cfg['SECRET_KEY'] = '' @@ -259,6 +266,5 @@ if __name__ == "__main__": kernel = RZ_Kernel() webapp = init_webapp(cfg, kernel) ws_srv = init_ws_interface(cfg, kernel, webapp) - init_mail(webapp) ws_srv.serve_forever() |
