- 支持 465 隐式 TLS 与 587 STARTTLS,SMTP 配置优先、Postmark 备用 - 发件人支持 QQ 域名邮箱地址(z@kepo.net),凭证仅走环境变量 - HTTP 测试覆盖发送成功与认证失败;真实发信测试需显式开启 RUN_QQ_SMTP_LIVE_TEST Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
deb32f8fab
commit
c161d42b06
+13
-5
@@ -5,7 +5,7 @@
|
||||
## 功能模块
|
||||
|
||||
- 微信小程序登录与生辰档案。
|
||||
- Postmark 邮箱验证码登录。
|
||||
- QQ 邮箱 SMTP 验证码登录,支持 465 隐式 TLS 或 587 STARTTLS;Postmark 可选备用。
|
||||
- Stripe `4.99 USD` 报告支付。
|
||||
- Binance Pay `5 USDT` 报告支付。
|
||||
- 签名 Webhook、幂等事件、退款权益撤销。
|
||||
@@ -35,7 +35,7 @@ go run ./cmd
|
||||
go test ./...
|
||||
```
|
||||
|
||||
测试环境文件为本地 `server/.env.test`,不提交任何真实密钥。
|
||||
本地测试配置使用 `server/.env.test`。如果文件包含 SMTP 凭证,必须保持 Git 忽略并限制文件权限,绝不提交到仓库。真实发信测试需显式运行 `RUN_QQ_SMTP_LIVE_TEST=1 SMTP_TEST_TO=收件地址 go test ./internal/handler -run '^TestRequestEmailLoginCodeLiveQQSMTP$' -count=1`;该命令会实际发送邮件。
|
||||
|
||||
## 商业支付 API
|
||||
|
||||
@@ -88,14 +88,22 @@ mysql < migrations/002_commerce.sql
|
||||
|
||||
## 环境变量
|
||||
|
||||
完整模板见 `.env.example`。生产环境至少需要:
|
||||
完整模板见 `.env.example`。邮箱登录配置 QQ SMTP:
|
||||
|
||||
- `SMTP_HOST=smtp.qq.com`
|
||||
- `SMTP_PORT=465`(或 587)
|
||||
- `SMTP_USERNAME`:完整 QQ 邮箱地址
|
||||
- `SMTP_PASSWORD`:QQ 邮箱生成的 SMTP 授权码,不是邮箱登录密码
|
||||
- `SMTP_FROM_EMAIL`:发件地址。生产使用 `z@kepo.net`(`kepo.net` 已通过 QQ 域名邮箱绑定,MX 为 `mxdomain.qq.com`);需在 DNS 添加 SPF 记录 `v=spf1 include:spf.mail.qq.com ~all`,否则 Gmail 等可能拒收或判为垃圾邮件
|
||||
- `SMTP_TLS_MODE=implicit`(465)或 `starttls`(587)
|
||||
- `SMTP_TLS_CA_FILE`:可选的自定义 CA 文件路径
|
||||
|
||||
QQ 邮箱需先在账户设置中开启 SMTP 服务。SMTP 配置有效时优先使用 SMTP;未配置时才尝试 Postmark。生产环境还需要:
|
||||
|
||||
- `JWT_SECRET`
|
||||
- `ADMIN_PASSWORD`
|
||||
- `PUBLIC_BASE_URL`
|
||||
- `WEB_APP_URL`
|
||||
- `POSTMARK_SERVER_TOKEN`
|
||||
- `POSTMARK_FROM_EMAIL`
|
||||
- `STRIPE_SECRET_KEY`
|
||||
- `STRIPE_WEBHOOK_SECRET`
|
||||
- `BINANCE_PAY_API_KEY`
|
||||
|
||||
Reference in New Issue
Block a user