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

2.1 KiB
Raw Blame History

目标

  • 配置并启用阿里企业邮箱 SMTP完成服务端发送邮件功能验证含附件/远程文件)。

所需配置

  • 配置项位置:app/settings/config.py:103-109SMTP_HOST/SMTP_PORT/SMTP_USERNAME/SMTP_PASSWORD/SMTP_TLS/SMTP_FROM
  • 建议取值(不要写入仓库,使用环境变量注入):
    • SMTP_HOST=smtp.qiye.aliyun.com
    • SMTP_PORT=465SSL 直连)
    • SMTP_TLS=false465 对应 SSL如用 587 则改为 SMTP_TLS=trueSMTP_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-emailapp/api/v1/transactions/transactions.py:62-104
    • 支持直接上传附件(file)或通过 file_url 拉取远程文件,记录日志到 email_send_log

验证步骤

  1. 获取后台 tokenPOST /api/v1/base/access_tokenadmin 账号)
  2. 发送纯文本邮件(无附件):
    • POST /api/v1/transactions/send-emailJSON{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。