guzhi/.trae/documents/配置阿里企业邮箱SMTP并验证发送.md
邹方成 f536178428 feat: 新增交易记录管理功能与统一上传接口
feat(交易记录): 新增交易记录管理页面与API接口
feat(上传): 添加统一上传接口支持自动识别文件类型
feat(用户管理): 为用户模型添加备注字段并更新相关接口
feat(邮件): 实现SMTP邮件发送功能并添加测试脚本
feat(短信): 增强短信服务配置灵活性与日志记录

fix(发票): 修复发票列表时间筛选功能
fix(nginx): 调整上传大小限制与超时配置

docs: 添加多个功能模块的说明文档
docs(估值): 补充估值计算流程与API提交数据说明

chore: 更新依赖与Docker镜像版本
2025-11-20 20:53:09 +08:00

36 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 目标
- 配置并启用阿里企业邮箱 SMTP完成服务端发送邮件功能验证含附件/远程文件)。
## 所需配置
- 配置项位置:`app/settings/config.py:103-109``SMTP_HOST/SMTP_PORT/SMTP_USERNAME/SMTP_PASSWORD/SMTP_TLS/SMTP_FROM`
- 建议取值(不要写入仓库,使用环境变量注入):
- `SMTP_HOST=smtp.qiye.aliyun.com`
- `SMTP_PORT=465`SSL 直连)
- `SMTP_TLS=false`465 对应 SSL如用 587 则改为 `SMTP_TLS=true``SMTP_PORT=587`
- `SMTP_FROM=value@cdcee.net`
- `SMTP_USERNAME=value@cdcee.net`
- `SMTP_PASSWORD=<授权码>`(你提供的授权码)
- 安全要求:不将授权码写入代码或仓库;仅通过环境变量或部署系统秘密管理器设置。
## 实现检查
- 发送实现:`app/services/email_client.py:12-49`
-`SMTP_TLS=false` 时使用 `SMTP_SSL(host, 465)`;为 `true` 时使用 `SMTP(host, 587).starttls()`
- 发送成功返回 `{status: 'OK'}`,失败返回 `{status: 'FAIL', error}`
- 接口:`POST /api/v1/transactions/send-email``app/api/v1/transactions/transactions.py:62-104`
- 支持直接上传附件(`file`)或通过 `file_url` 拉取远程文件,记录日志到 `email_send_log`
## 验证步骤
1. 获取后台 token`POST /api/v1/base/access_token`admin 账号)
2. 发送纯文本邮件(无附件):
- `POST /api/v1/transactions/send-email`JSON`{email, subject, body}`,携带 `token`
3. 发送带附件file_url
- JSON`{email, subject, body, file_url: 'https://...'}`;或使用 `multipart/form-data` 上传 `file`
4. 结果期望:返回 `{"status":"OK","log_id":...}`;失败时查看错误内容并修正配置。
## 可选增强
-`email_client.send` 增加更明确的错误分类与超时提示(保留现有结构)。
- 提供健康检查端点:尝试建立 SMTP 连接并返回诊断信息(仅管理员角色可访问)。
## 回滚与安全
- 变更仅在环境变量层面,可随时回滚;不改代码,不提交授权码。
- 若切换至 587需同时改为 `SMTP_TLS=true` 并确保上游网络允许 STARTTLS。