import logging from smtplib import SMTPException from threading import Thread from flask import current_app as app from ereuse_devicehub.mail.flask_mail import Message logger = logging.getLogger(__name__) def _send_async_email(app, msg): with app.app_context(): try: app.mail.send(msg) except SMTPException: logger.exception("An error occurred while sending the email") def send_email( subject, recipients, text_body, sender=None, cc=None, bcc=None, html_body=None ): msg = Message(subject, sender=sender, recipients=recipients, cc=cc, bcc=bcc) msg.body = text_body if html_body: msg.html = html_body Thread( target=_send_async_email, args=(app._get_current_object(), msg) ).start()