新的邮件模版

This commit is contained in:
Benny
2023-02-06 22:07:51 +01:00
parent cec312082a
commit 4caa1700f8
4 changed files with 206 additions and 10 deletions

View File

@@ -10,6 +10,7 @@ __author__ = "Benny <benny.think@gmail.com>"
import contextlib
import logging
import os
import pathlib
import smtplib
import time
from datetime import datetime
@@ -20,6 +21,9 @@ from email.utils import formataddr, parseaddr
import pytz
import requests
from akismet import Akismet
from jinja2 import Template
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
def ts_date(ts=None):
@@ -33,23 +37,31 @@ def _format_addr(s):
return formataddr((Header(name, 'utf-8').encode(), addr))
def send_mail(to: str, subject: str, body: str):
def generate_body(context):
template = pathlib.Path(__file__).parent.joinpath('templates', "email_template.html")
with open(template) as f:
return Template(f.read()).render(**context)
def send_mail(to: str, subject: str, context: dict):
user = os.getenv("email_user")
password = os.getenv("email_password")
host = os.getenv("email_host") or "localhost"
port = os.getenv("email_port") or "1025" # mailhog
from_addr = os.getenv("from_addr") or "yyets@dmesg.app"
msg = MIMEText(body, 'html', 'utf-8')
msg = MIMEText(generate_body(context), 'html', 'utf-8')
msg['From'] = _format_addr('YYeTs <%s>' % from_addr)
msg['To'] = _format_addr(to)
msg['Subject'] = Header(subject, 'utf-8').encode()
logging.info("logging to mail server...")
if port == "1025":
server = smtplib.SMTP(host, int(port))
else:
server = smtplib.SMTP_SSL(host, int(port))
server.login(user, password)
logging.info("sending email to %s", to)
server.sendmail(from_addr, [to], msg.as_string())
server.quit()
@@ -104,6 +116,4 @@ class Cloudflare:
if __name__ == '__main__':
cf = Cloudflare()
cf.clear_fw()
cf.ban_new_ip("3.3.3.3")
send_mail("benny.think@gmail.com", "主题", {"username": "test123", "text": "测试内容<b>不错</b>"})