From f5b69d0b4c8146b6f00182cdb7a26f0f83f57fe0 Mon Sep 17 00:00:00 2001 From: qing <1776177662@qq.com> Date: Wed, 29 Jul 2026 19:08:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20smtp=20.env=20=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=20KEY:=20VALUE=20=E5=86=92=E5=8F=B7=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=EF=BC=8CMAIL=5FFROM=20=E9=BB=98=E8=AE=A4=E8=B7=9F?= =?UTF-8?q?=E9=9A=8F=20SMTP=5FUSER?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 服务器 .env 误用 YAML 冒号格式导致凭证全部加载为空;163 等服务商强制 From 头与登录账号一致,写死的 MAIL_FROM 会触发 553,现默认取 SMTP_USER、可用 .env 显式覆盖。 --- smtp/smtp_v2.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/smtp/smtp_v2.py b/smtp/smtp_v2.py index cb68261..e889bc8 100644 --- a/smtp/smtp_v2.py +++ b/smtp/smtp_v2.py @@ -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},一分钟内有效。"