fix: smtp .env 解析兼容 KEY: VALUE 冒号格式,MAIL_FROM 默认跟随 SMTP_USER

服务器 .env 误用 YAML 冒号格式导致凭证全部加载为空;163 等服务商强制 From 头与登录账号一致,写死的 MAIL_FROM 会触发 553,现默认取 SMTP_USER、可用 .env 显式覆盖。
This commit is contained in:
qing committed 2026-07-29 19:08:13 +08:00
1 parent 53c742c26e
commit f5b69d0b4c
1 file changed
+7 -3
+7 -3
View File
@@ -27,7 +27,7 @@ import threading
import time
from email.mime.text import MIMEText
# 手动加载 .env(支持 KEY=VALUE / KEY VALUE / export KEY=... 格式,容忍空行/注释/引号)
# 手动加载 .env(支持 KEY=VALUE / KEY: VALUE / KEY VALUE / export KEY=... 格式,容忍空行/注释/引号)
_env_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), ".env")
_env_loaded = 0
if os.path.isfile(_env_path):
@@ -38,9 +38,11 @@ if os.path.isfile(_env_path):
continue
if _line.startswith("export "):
_line = _line[len("export "):].strip()
# 支持 KEY=VALUE 与 KEY VALUE 两种写法
# 支持 KEY=VALUE / KEY: VALUE / KEY VALUE 三种写法
if "=" in _line:
_key, _, _val = _line.partition("=")
elif ":" in _line:
_key, _, _val = _line.partition(":")
else:
_parts = _line.split(None, 1)
_key = _parts[0]
@@ -70,7 +72,9 @@ SMTP_PASSWORD = os.environ.get("__PASSWORD") or os.environ.get("SMTP_PASSWORD",
CODE_LEN = 6
CODE_TTL = 60 # 验证码有效期(秒)
MAIL_FROM = "dnfs@qsont.me"
# 多数邮箱服务商(163/QQ 等)强制 From 头与登录账号一致,故默认跟随 SMTP_USER;
# 仅当服务商允许自定义发件身份时才在 .env 里显式配 MAIL_FROM 覆盖
MAIL_FROM = os.environ.get("MAIL_FROM") or SMTP_USER
DEFAULT_SUBJECT = "DNFS 邮箱验证"
DEFAULT_CONTENT = "DNFS: 您的邮箱验证码为 {code},一分钟内有效。"