From d5a67ce77edf29db9b4ad32c3bb1422a7d51ea52 Mon Sep 17 00:00:00 2001 From: qing <1776177662@qq.com> Date: Tue, 28 Jul 2026 17:42:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20smtp=20.env=20=E5=85=BC=E5=AE=B9=20expor?= =?UTF-8?q?t=20=E5=89=8D=E7=BC=80=E5=B9=B6=E5=9C=A8=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E6=8A=A5=E5=91=8A=E7=BC=BA=E5=A4=B1=E7=9A=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- smtp/smtp.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/smtp/smtp.py b/smtp/smtp.py index 4c5d08b..2028ab3 100644 --- a/smtp/smtp.py +++ b/smtp/smtp.py @@ -27,14 +27,17 @@ import threading import time from email.mime.text import MIMEText -# 手动加载 .env(支持 KEY=VALUE 和 KEY VALUE 两种格式,容忍空行/注释/引号) +# 手动加载 .env(支持 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): with open(_env_path, "r") as _f: for _line in _f: _line = _line.strip() if not _line or _line.startswith("#"): continue + if _line.startswith("export "): + _line = _line[len("export "):].strip() # 支持 KEY=VALUE 与 KEY VALUE 两种写法 if "=" in _line: _key, _, _val = _line.partition("=") @@ -46,6 +49,9 @@ if os.path.isfile(_env_path): _val = _val.strip().strip("\"'") if _key and _key not in os.environ: os.environ[_key] = _val + _env_loaded += 1 +else: + print(f"[smtp] 警告: 未找到 .env 文件: {_env_path}") from log_client import logs @@ -95,9 +101,13 @@ class SmtpServer: def start(self) -> None: """启动服务(阻塞当前线程)。""" if not all([SMTP_SERVER, SMTP_USER, SMTP_PASSWORD]): - logs.error("smtp", "SMTP 配置不完整(.env 缺 SMTP_SERVER/SMTP_USER/__PASSWORD)," - "send_email 将始终失败") - print("[smtp] 警告: SMTP 配置不完整,send_email 将失败") + # 只报缺失的 key 名,绝不报值 + missing = [k for k, v in (("SMTP_SERVER", SMTP_SERVER), + ("SMTP_USER", SMTP_USER), + ("__PASSWORD", SMTP_PASSWORD)) if not v] + logs.error("smtp", f"SMTP 配置缺失: {','.join(missing)}" + f"(.env 加载 {_env_loaded} 项),send_email 将始终失败") + print(f"[smtp] 警告: SMTP 配置缺失: {','.join(missing)}(.env 加载 {_env_loaded} 项)") print(f"[smtp] 监听 tcp://{self.addr}:{self.port}") logs.info("smtp", f"开始监听 tcp://{self.addr}:{self.port}") self._server.start(self._dispatch)