yanyuyijian/Scripts/py/FreeNom/utils/mail.py
Leon d81cfd5379 📦
2021-08-11 19:13:07 +08:00

53 lines
1.6 KiB
Python

import smtplib
import traceback
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from jinja2 import FileSystemLoader, Environment, Template
from . import settings
class EmailPoster(object):
"""
邮件发送基础类
"""
@staticmethod
def get_template():
loader = FileSystemLoader('templates')
env = Environment(loader=loader)
template = env.get_template("default.html")
return template
def send(self, data: dict):
payload = data.get("payload", {})
if payload:
template = self.get_template()
content = template.render(payload=payload)
else:
content = data.get('body', '')
subject = data.get('subject', '')
mail_to = data.get('to', [])
mail_from = data.get('from', settings.MAIL_ADDRESS)
self._send(content, subject, mail_from, mail_to)
@staticmethod
def _send(content: str, subject: str, mail_from: str, mail_to: list):
msg_root = MIMEMultipart('related')
msg_text = MIMEText(content, 'html', 'utf-8')
msg_root.attach(msg_text)
msg_root['Subject'] = subject
msg_root['From'] = mail_from
msg_root['To'] = ";".join(mail_to)
try:
smtp = smtplib.SMTP_SSL(settings.MAIL_HOST, settings.MAIL_PORT)
# smtp.set_debuglevel(1)
smtp.ehlo()
smtp.login(settings.MAIL_USER, settings.MAIL_PW)
smtp.sendmail(settings.MAIL_ADDRESS, mail_to, msg_root.as_string())
smtp.quit()
except Exception as e:
print(traceback.format_exc(e))