feat(交易记录): 新增交易记录管理页面与API接口 feat(上传): 添加统一上传接口支持自动识别文件类型 feat(用户管理): 为用户模型添加备注字段并更新相关接口 feat(邮件): 实现SMTP邮件发送功能并添加测试脚本 feat(短信): 增强短信服务配置灵活性与日志记录 fix(发票): 修复发票列表时间筛选功能 fix(nginx): 调整上传大小限制与超时配置 docs: 添加多个功能模块的说明文档 docs(估值): 补充估值计算流程与API提交数据说明 chore: 更新依赖与Docker镜像版本
2.1 KiB
2.1 KiB
目标
- 配置并启用阿里企业邮箱 SMTP,完成服务端发送邮件功能验证(含附件/远程文件)。
所需配置
- 配置项位置:
app/settings/config.py:103-109(SMTP_HOST/SMTP_PORT/SMTP_USERNAME/SMTP_PASSWORD/SMTP_TLS/SMTP_FROM) - 建议取值(不要写入仓库,使用环境变量注入):
SMTP_HOST=smtp.qiye.aliyun.comSMTP_PORT=465(SSL 直连)SMTP_TLS=false(465 对应 SSL;如用 587 则改为SMTP_TLS=true并SMTP_PORT=587)SMTP_FROM=value@cdcee.netSMTP_USERNAME=value@cdcee.netSMTP_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
- 支持直接上传附件(
验证步骤
- 获取后台 token:
POST /api/v1/base/access_token(admin 账号) - 发送纯文本邮件(无附件):
POST /api/v1/transactions/send-email,JSON:{email, subject, body},携带token头
- 发送带附件(file_url):
- JSON:
{email, subject, body, file_url: 'https://...'};或使用multipart/form-data上传file
- JSON:
- 结果期望:返回
{"status":"OK","log_id":...};失败时查看错误内容并修正配置。
可选增强
- 为
email_client.send增加更明确的错误分类与超时提示(保留现有结构)。 - 提供健康检查端点:尝试建立 SMTP 连接并返回诊断信息(仅管理员角色可访问)。
回滚与安全
- 变更仅在环境变量层面,可随时回滚;不改代码,不提交授权码。
- 若切换至 587,需同时改为
SMTP_TLS=true并确保上游网络允许 STARTTLS。