#!/usr/bin/env python3 from flask import render_template from flask_mail import Message from flask import current_app as app from .. import mail from threading import Thread def send_password_reset_email(contributor, external_url): token = contributor.get_reset_password_token() send_email('Todo App Reset Your Password', sender=app.config['MAIL_ADMINS'][0], recipients=[contributor.email], text_body=render_template('email/reset_password_email_text.txt', contributor=contributor, token=token, external_url=external_url), html_body=render_template('email/reset_password_email_html.html', contributor=contributor, token=token, external_url=external_url)) def send_async_email(app, msg): with app.app_context(): mail.send(msg) def send_email(subject, sender, recipients, text_body, html_body): msg = Message(subject, sender=sender, recipients=recipients) msg.body = text_body msg.html = html_body Thread(target=send_async_email, args=(app._get_current_object(), msg)).start()