diff --git a/inventory-backend/app/utils/email_service.py b/inventory-backend/app/utils/email_service.py index 3923180..b7a3d41 100644 --- a/inventory-backend/app/utils/email_service.py +++ b/inventory-backend/app/utils/email_service.py @@ -10,6 +10,7 @@ import logging from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header +from email.utils import formatdate, make_msgid from typing import List, Union logger = logging.getLogger(__name__) @@ -94,6 +95,13 @@ def send_email(to_email: Union[str, List[str]], subject: str, content: str, cfg: msg['From'] = cfg['sender'] msg['To'] = ', '.join(recipients) msg['Subject'] = Header(subject, 'utf-8') + # ★ Date 与 Message-ID 是 RFC 5322 的**必需/强烈建议**头, + # smtplib 不会自动补。缺了它们,收件方的反垃圾引擎会显著加分 + # ("来源不明的自动化邮件"),很容易被判成垃圾或进隔离区 —— + # 而发件服务器照样回 250,客户端完全看不出来。 + # 实测本项目的邮件此前两个头都没有。 + msg['Date'] = formatdate(localtime=True) + msg['Message-ID'] = make_msgid(domain=(cfg['sender'].split('@')[-1] or None)) msg.attach(MIMEText(content, 'plain', 'utf-8')) print(f"DEBUG: 准备向服务器提交发信请求,收件人: {recipients} 发件人: {cfg['username']}")