fix: support SMTP STARTTLS mode and NTLM auth (#5426)

* fix: support SMTP STARTTLS mode and NTLM auth

Add explicit SMTP STARTTLS configuration for 587-style connections and keep SSL/TLS as the implicit TLS mode.

Prefer PLAIN when advertised, keep LOGIN compatibility, and add NTLM as a fallback for Exchange SMTP servers that require it after STARTTLS.

* fix: respect explicit SMTP encryption mode

* fix: preserve SMTP TLS compatibility
This commit is contained in:
Benson Yan
2026-06-24 12:45:39 +08:00
committed by GitHub
parent 9fc9c8f1e3
commit 2f23a66733
27 changed files with 959 additions and 52 deletions
+9
View File
@@ -299,6 +299,7 @@
"Allow requests to private IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)": "允许请求私有 IP 范围 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)",
"Allow Retry": "允许重试",
"Allow safety_identifier passthrough": "允许透传 safety_identifier",
"Allow self-signed or hostname-mismatched SMTP certificates": "允许自签名或主机名不匹配的 SMTP 证书",
"Allow service_tier passthrough": "允许透传 service_tier",
"Allow speed passthrough": "允许 speed 透传",
"Allow upstream callbacks": "允许上游回调",
@@ -757,6 +758,7 @@
"Choose how the platform will operate": "选择平台的运行模式",
"Choose how to filter domains": "选择如何过滤域名",
"Choose how to filter IP addresses": "选择如何过滤 IP 地址",
"Choose one SMTP transport security mode": "选择一种 SMTP 传输加密方式",
"Choose the bundle type and define the items inside it.": "选择捆绑包类型并定义其中的项目。",
"Choose the default charts, range, and time granularity for model analytics.": "选择模型调用分析的默认图表、范围和时间粒度。",
"Choose where to fetch upstream metadata.": "选择从何处获取上游元数据。",
@@ -1493,6 +1495,7 @@
"Enable selected models": "启用选定的模型",
"Enable SSL/TLS": "启用 SSL/TLS",
"Enable SSRF Protection": "启用 SSRF 保护",
"Enable STARTTLS": "启用 STARTTLS",
"Enable streaming mode for the test request.": "为测试请求启用流式模式。",
"Enable Telegram OAuth": "启用 Telegram OAuth",
"Enable test mode for Creem payments": "启用 Creem 支付测试模式",
@@ -2806,6 +2809,7 @@
"Non-stream": "非流式",
"Non-zero invitation rewards require compliance confirmation in Payment Gateway settings.": "非零邀请奖励需要先在支付网关设置中确认合规条款。",
"None": "无",
"No encryption": "无加密",
"noreply@example.com": "noreply@example.com",
"Normalized:": "已归一化:",
"Not available": "不可用",
@@ -3917,13 +3921,16 @@
"Size:": "大小:",
"sk_xxx or rk_xxx": "sk_xxx 或 rk_xxx",
"Skip retry on failure": "失败后不重试",
"Skip SMTP TLS certificate verification": "跳过 SMTP TLS 证书验证",
"Skip to Main": "跳到主内容",
"Slug": "标识符",
"Slug can only contain letters, numbers, hyphens, and underscores": "Slug 只能包含字母、数字、连字符和下划线",
"Slug is required": "Slug 不能为空",
"Slug must be less than 100 characters": "Slug 不能超过 100 个字符",
"Smallest USD amount users can recharge (Epay)": "用户可以充值的最小美元金额 (Epay)",
"SSL/TLS": "SSL/TLS",
"SMTP Email": "SMTP 邮箱",
"SMTP encryption": "SMTP 加密方式",
"SMTP Host": "SMTP 主机",
"smtp.example.com": "smtp.example.com",
"socks5://user:pass@host:port": "socks5://user:pass@host:port",
@@ -3953,6 +3960,7 @@
"SSRF Protection": "SSRF 保护",
"Standard": "标准",
"Standard price": "标准价格",
"STARTTLS": "STARTTLS",
"Start": "开始",
"Start a conversation to see messages here": "开始对话以在此处查看消息",
"Start collecting payments globally without registering a company. Built for indie developers, OPC sole proprietorships, and startups. Waffo Pancake acts as your Merchant of Record, taking on the compliance burden of global payment collection — consumption tax, invoicing, subscription management, refunds, and chargebacks. Solo developers can launch fast and stay focused on product instead of compliance. Onboard in minutes — one prompt to a full integration.": "无需注册公司即可开始全球收款。面向独立开发者、OPC 个体经营者和初创团队构建。Waffo Pancake 作为你的登记商户(Merchant of Record),承担全球收款相关的合规负担,包括消费税、开票、订阅管理、退款和拒付。个人开发者可以快速上线,专注产品而不是合规事务。几分钟即可完成入驻,从一个提示词到完整集成。",
@@ -4478,6 +4486,7 @@
"Updated user {{username}} (ID: {{id}})": "更新用户 {{username}}ID: {{id}}",
"Updating all channel balances. This may take a while. Please refresh to see results.": "正在更新所有渠道余额。这可能需要一段时间。请刷新以查看结果。",
"Upgrade Group": "升级分组",
"Upgrade plaintext SMTP connection with STARTTLS before authentication": "在身份验证前使用 STARTTLS 升级明文 SMTP 连接",
"Upload": "上传",
"Upload a single service account JSON file": "上传单个服务账号 JSON 文件",
"Upload file": "上传文件",