This repository has been archived on 2023-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
web-gpt/project/smtp.py

32 lines
1.1 KiB
Python
Raw Normal View History

2023-04-19 00:16:19 +08:00
import smtplib
import logging
2023-04-20 00:48:52 +08:00
import email
2023-04-19 00:16:19 +08:00
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
2023-04-19 22:50:55 +08:00
from flask import current_app
2023-04-19 00:16:19 +08:00
2023-04-19 22:50:55 +08:00
mail_config = current_app.config['mail']
2023-04-19 00:16:19 +08:00
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")
2023-04-20 00:48:52 +08:00
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"))
2023-04-19 00:16:19 +08:00
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()