Files

34 lines
1.1 KiB
Python

import logging
import smtplib
from email.message import EmailMessage
from app.core.config import get_settings
logger = logging.getLogger("gsfdc.mailer")
def send_email(*, to: str, subject: str, body: str) -> None:
settings = get_settings()
host = settings.smtp_host.strip()
if not host:
raise RuntimeError("SMTP 未配置")
sender = (settings.smtp_sender or settings.smtp_user).strip()
if not sender:
raise RuntimeError("SMTP 发件人未配置")
message = EmailMessage()
message["From"] = sender
message["To"] = to
message["Subject"] = subject
message.set_content(body)
if settings.smtp_use_ssl:
with smtplib.SMTP_SSL(host, settings.smtp_port, timeout=20) as smtp:
if settings.smtp_user.strip():
smtp.login(settings.smtp_user.strip(), settings.smtp_password)
smtp.send_message(message)
return
with smtplib.SMTP(host, settings.smtp_port, timeout=20) as smtp:
smtp.starttls()
if settings.smtp_user.strip():
smtp.login(settings.smtp_user.strip(), settings.smtp_password)
smtp.send_message(message)