Files
AIGC/demo/EMAIL_LOGIN_CONFIGURATION_CHECKLIST.md
AIGC Developer 149b201300 优化邮件发送功能和支付宝支付诊断
- 修复邮件服务区域配置(改为ap-hongkong)
- 增强支付宝支付错误诊断和日志
- 修复代码质量问题(OrderService、ImageToVideoTask)
- 添加支付宝支付问题排查文档
- 增加详细的错误诊断信息
2025-11-03 13:20:30 +08:00

10 KiB
Raw Blame History

邮件登录模块配置清单

一、已配置项

1. 开发环境配置application-dev.properties

  • tencent.ses.secret-id - SecretID已配置
  • tencent.ses.secret-key - SecretKey已配置
  • tencent.ses.region - 服务区域ap-beijing
  • tencent.ses.from-email - 发信地址(newletter@vionow.com
  • tencent.ses.from-name - 发件人名称AIGC平台
  • tencent.ses.template-id - 模板ID154360生产模式

2. 代码实现

  • 邮箱验证码登录接口(/api/auth/login/email
  • 发送验证码接口(/api/verification/email/send
  • 验证码服务VerificationCodeService
  • 腾讯云SES邮件服务TencentSesMailService
  • 前端登录页面Login.vue
  • 用户名密码登录已禁用

二、需要检查/更新项 ⚠️

1. 腾讯云SES服务权限检查 ⚠️ 重要

当前配置的账号信息:

  • 主账号ID: 100040185043
  • 用户名: test
  • SecretID: AKIDXw8HBtNfjdJm480xljV4QZUDi05wa0DE
  • SecretKey: tZyHMDsKadS4ScZhhU3PYUErGUVIqBIB

需要确认:

  • SecretID/SecretKey 是否有效

  • 是否有SES服务访问权限

    • 子账号需要有SES邮件推送服务的访问权限
    • 如果没有权限,需要在主账号中授权

检查步骤:

  1. 登录腾讯云控制台
  2. 进入"访问管理" → "API密钥管理"
  3. 检查密钥状态
  4. 检查子账号权限策略

2. 发信地址验证 ⚠️ 重要(生产环境必需)

当前配置:

  • 发信地址: newletter@vionow.com

需要操作:

验证步骤:

  1. 进入SES控制台 → "发信地址"
  2. 点击"创建发信地址"或编辑现有地址
  3. 输入邮箱:newletter@vionow.com
  4. 腾讯云会发送验证邮件到该邮箱
  5. 点击邮件中的验证链接完成验证
  6. 确认状态变为"已验证"

注意:

  • ⚠️ 只有验证通过的邮箱才能发送邮件
  • ⚠️ 开发模式template-id=0不需要验证也能测试但不会实际发邮件
  • ⚠️ 生产模式必须有已验证的发信地址

3. 邮件模板配置 已配置

当前状态:

  • template-id=154360 - 生产模式(已配置)

当前配置:

  • 模板ID已配置为 154360
  • 系统将使用生产模式,实际发送邮件

模板说明:

  • 模板ID: 154360
  • 模式: 生产模式(会实际发送邮件)
  • 验证码变量: 模板中应包含 {{code}} 变量用于替换验证码

4. 生产环境配置 ⚠️ 缺失

当前状态: application-prod.properties没有腾讯云SES配置

需要添加:

  • 在生产环境配置文件中添加SES配置

操作步骤:demo/src/main/resources/application-prod.properties 中添加:

# 腾讯云SES配置 (生产环境)
tencent.ses.secret-id=${TENCENT_SES_SECRET_ID}
tencent.ses.secret-key=${TENCENT_SES_SECRET_KEY}
tencent.ses.region=ap-beijing
tencent.ses.from-email=${TENCENT_SES_FROM_EMAIL}
tencent.ses.from-name=AIGC平台
tencent.ses.template-id=${TENCENT_SES_TEMPLATE_ID}

环境变量设置:

export TENCENT_SES_SECRET_ID=你的SecretID
export TENCENT_SES_SECRET_KEY=你的SecretKey
export TENCENT_SES_FROM_EMAIL=newletter@vionow.com
export TENCENT_SES_TEMPLATE_ID=你的模板ID

5. SES服务开通和额度 ⚠️ 重要

需要确认:

  • SES服务是否已开通

  • 是否有可用额度

    • 检查账户余额或免费额度
    • 确认是否有足够的邮件发送配额
    • 查看计费信息

检查步骤:

  1. 登录腾讯云控制台
  2. 进入SES服务控制台
  3. 查看"概览"页面的配额和用量信息
  4. 确认是否有可用额度

6. 测试验证 ⚠️ 重要

开发模式测试:

  • 启动服务并测试

    cd demo
    ./mvnw spring-boot:run
    
  • 测试发送验证码

    curl -X POST http://localhost:8080/api/verification/email/send \
      -H "Content-Type: application/json" \
      -d '{"email":"test@example.com"}'
    
  • 检查邮箱

  • 测试登录

    • 访问登录页面
    • 输入邮箱和验证码
    • 验证登录功能

生产模式测试(已完成配置):

  • Template-id已配置为154360
  • 重启服务(如果服务正在运行)
  • 发送测试邮件
  • 检查实际邮箱是否收到邮件

三、配置优先级

🔴 紧急(必须配置)

  1. 发信地址验证 - 生产环境必须验证才能发送邮件
  2. 邮件模板创建 - 生产环境必须配置模板ID
  3. 生产环境配置 - application-prod.properties 缺少SES配置

🟡 重要(建议配置)

  1. SES服务权限检查 - 确保账号有权限访问SES服务
  2. SES服务开通和额度 - 确保有可用配额
  3. 测试验证 - 确保功能正常(会实际发送邮件)
  4. 发信地址验证 - 确保 newletter@vionow.com 已验证

四、配置检查清单

开发环境配置状态

配置项 状态 说明
SecretID 已配置 需确认有效性和权限
SecretKey 已配置 需确认有效性
Region 已配置 ap-beijing
From-email 已配置 newletter@vionow.com(需确认已验证)
From-name 已配置 AIGC平台
Template-id 已配置 154360生产模式

生产环境配置状态

配置项 状态 说明
SecretID 未配置 需要添加环境变量
SecretKey 未配置 需要添加环境变量
Region 未配置 需要添加配置
From-email 未配置 需要添加环境变量
From-name 未配置 需要添加配置
Template-id 未配置 需要创建模板并配置ID

五、快速检查命令

检查配置文件

# Windows PowerShell
Test-Path demo/src/main/resources/application-dev.properties
Test-Path demo/src/main/resources/application-prod.properties

# 检查SES配置项
Select-String -Path "demo/src/main/resources/application-dev.properties" -Pattern "tencent.ses"

测试邮件发送功能

# 开发模式测试(不会实际发送邮件)
curl -X POST http://localhost:8080/api/verification/email/send \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com"}'

# 检查日志中的验证码
# 应该看到:开发模式:邮件验证码发送到: test@example.com, 验证码: XXXXXX

测试登录功能

# 使用开发接口设置验证码(开发模式)
curl -X POST http://localhost:8080/api/verification/email/dev-set \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","code":"123456"}'

# 测试登录
curl -X POST http://localhost:8080/api/auth/login/email \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","code":"123456"}'

六、常见问题

Q1: 当前配置为生产模式

A: 当前模板ID已配置为154360生产模式系统会实际发送邮件。请确保

  • 发信地址 newletter@vionow.com 已验证
  • SES服务有可用额度
  • 模板ID 154360 在腾讯云SES控制台已审核通过

Q2: 发送失败 - 认证错误

InvalidSecretId.InvalidSignature

解决:

  • 检查SecretID和SecretKey是否正确
  • 确认密钥是否有SES服务权限
  • 检查密钥是否过期

Q3: 发送失败 - 发信地址未验证

InvalidParameter.EmailAddressNotVerified

解决:

  • 在SES控制台验证发信地址
  • 检查 tencent.ses.from-email 配置是否正确
  • 注意开发模式template-id=0不需要验证也能测试

Q4: 发送失败 - 模板不存在

ResourceNotFound.TemplateNotFound

解决:

  • 确认模板ID是否正确
  • 检查模板是否已审核通过
  • 确认模板区域与配置的region一致

Q5: 当前已是生产模式

A: 当前已配置为生产模式template-id=154360系统会实际发送邮件。如需切换回开发模式将template-id设置为0即可。


七、下一步操作建议

当前配置(生产模式)

  1. 模板ID已配置为154360(生产模式)

  2. ⚠️ 验证发信地址(重要)

  3. ⚠️ 测试实际发送邮件

    • 重启服务(如果正在运行)
    • 发送测试验证码
    • 检查邮箱是否收到邮件
  4. ⚠️ 更新生产环境配置

    • application-prod.properties 中已添加SES配置
    • 设置环境变量 TENCENT_SES_TEMPLATE_ID=154360

八、相关文档链接


九、总结

当前状态

  • 开发环境配置已完成包括模板ID 154360
  • 生产模式已启用template-id=154360会实际发送邮件
  • ⚠️ 需要确保发信地址已验证

最小启动要求

  1. SecretID和SecretKey已配置
  2. From-email地址已配置newletter@vionow.com
  3. Template-id=154360生产模式已配置

生产环境要求

  1. ⚠️ 已验证的发信地址(newletter@vionow.com
  2. 已配置的邮件模板ID: 154360
  3. 生产环境配置文件中的SES配置已添加
  4. ⚠️ 有效的SecretID/SecretKey和SES服务权限需确认

当前状态: 已配置为生产模式,会实际发送邮件。请确保:

  • 发信地址 newletter@vionow.com 已验证
  • 模板ID 154360 已审核通过
  • SES服务有可用额度