feat(交易记录): 新增交易记录管理页面与API接口 feat(上传): 添加统一上传接口支持自动识别文件类型 feat(用户管理): 为用户模型添加备注字段并更新相关接口 feat(邮件): 实现SMTP邮件发送功能并添加测试脚本 feat(短信): 增强短信服务配置灵活性与日志记录 fix(发票): 修复发票列表时间筛选功能 fix(nginx): 调整上传大小限制与超时配置 docs: 添加多个功能模块的说明文档 docs(估值): 补充估值计算流程与API提交数据说明 chore: 更新依赖与Docker镜像版本
36 lines
2.1 KiB
Markdown
36 lines
2.1 KiB
Markdown
## 目标
|
||
- 配置并启用阿里企业邮箱 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。 |