more robust email format

This commit is contained in:
wangjiacai 2023-04-20 00:48:52 +08:00
parent a9b4a08357
commit e0eec9630b

View File

@ -1,5 +1,6 @@
import smtplib import smtplib
import logging import logging
import email
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.header import Header from email.header import Header
@ -12,10 +13,15 @@ logger = logging.getLogger('waitress')
def sendmail(to: str, subject: str, message: str): def sendmail(to: str, subject: str, message: str):
if not (mail_config['username'] and mail_config['password']): if not (mail_config['username'] and mail_config['password']):
logger.error("smtp email account is not configured") logger.error("smtp email account is not configured")
mail = MIMEText(message, "plain") mail = MIMEMultipart('alternative')
mail['Subject'] = Header(subject) mail['Subject'] = Header(subject).encode()
mail['From'] = Header(mail_config['from']) mail['From'] = '%s <%s>' % (
mail['To'] = Header(to) 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: try:
smtp = smtplib.SMTP_SSL(mail_config['host'], int(mail_config['port'])) smtp = smtplib.SMTP_SSL(mail_config['host'], int(mail_config['port']))
smtp.login(mail_config['username'], mail_config['password']) smtp.login(mail_config['username'], mail_config['password'])