import smtplib import logging import email from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header from flask import current_app mail_config = current_app.config['mail'] logger = logging.getLogger('waitress') def sendmail(to: str, subject: str, message: str): if not (mail_config['username'] and mail_config['password']): logger.error("smtp email account is not configured") mail = MIMEMultipart('alternative') mail['Subject'] = Header(subject).encode() mail['From'] = '%s <%s>' % ( Header(mail_config['from']).encode(), mail_config['username']) mail['To'] = to mail['Message-id'] = email.utils.make_msgid() mail['Date'] = email.utils.formatdate() mail.attach(MIMEText(message, "plain")) try: smtp = smtplib.SMTP_SSL(mail_config['host'], int(mail_config['port'])) smtp.login(mail_config['username'], mail_config['password']) smtp.sendmail(mail_config['username'], to, mail.as_string()) except Exception as e: logger.error("sendmail error: %s", repr(e)) smtp.quit()