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

5.3 KiB
Raw Blame History

邮件发送问题诊断指南

🔍 问题分析

根据你提供的日志,发现了以下情况:

日志分析

你的日志显示:

INFO  ... VerificationCodeService : 邮件验证码发送成功,邮箱: 984523799@qq.com

但是缺少以下关键日志:

  • 没有看到 "当前邮件模板ID配置: xxx"
  • 没有看到 "未配置邮件模板ID使用开发模式"(开发模式警告)
  • 没有看到 "使用生产模式发送邮件"(生产模式日志)
  • 没有看到 "开始发送邮件,收件人: ..."TencentSesMailService日志

可能的原因

  1. 配置值未正确读取

    • template-id=154360 可能没有被正确读取
    • 默认值 0 被使用,进入了开发模式
    • 但开发模式的警告日志也没有出现
  2. 服务使用旧版本代码

    • 可能运行的jar包是旧版本
    • 需要重新编译并启动

🛠️ 诊断步骤

步骤1检查配置是否正确读取

我已经更新了代码,添加了更详细的日志。请:

  1. 重新编译项目

    cd demo
    mvn clean package
    
  2. 重新启动服务

    java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
    
  3. 再次测试发送验证码

  4. 查看新的日志输出,应该能看到:

    INFO  ... VerificationCodeService : 当前邮件模板ID配置: 154360
    INFO  ... VerificationCodeService : 使用生产模式发送邮件,收件人: xxx@qq.com, 模板ID: 154360
    INFO  ... TencentSesMailService : 开始发送邮件,收件人: xxx@qq.com, 主题: 验证码, 模板ID: 154360
    

步骤2检查配置文件

确认 application-dev.properties 中的配置:

tencent.ses.template-id=154360

注意:

  • 确保没有空格
  • 确保值是正确的数字
  • 确保配置文件被正确加载(使用 --spring.profiles.active=dev

步骤3检查日志输出

如果看到:

INFO  当前邮件模板ID配置: 0
WARN  未配置邮件模板ID使用开发模式

说明: 配置值没有正确读取使用的是默认值0。

解决方案:

  1. 检查配置文件路径
  2. 确认使用的是dev配置--spring.profiles.active=dev
  3. 检查配置文件名是否正确

如果看到:

INFO  当前邮件模板ID配置: 154360
INFO  使用生产模式发送邮件,收件人: xxx@qq.com, 模板ID: 154360
INFO  开始发送邮件,收件人: xxx@qq.com, 主题: 验证码, 模板ID: 154360
ERROR 邮件验证码发送失败,邮箱: xxx@qq.com

说明: 配置正确,但邮件发送失败。

常见错误:

  1. 发信地址未验证

    InvalidParameter.EmailAddressNotVerified
    

    解决: 在腾讯云SES控制台验证 newletter@vionow.com

  2. 模板ID不存在或未审核

    ResourceNotFound.TemplateNotFound
    

    解决: 确认模板ID 154360 已审核通过

  3. 权限不足

    InvalidSecretId.InvalidSignature
    

    解决: 检查SecretID/SecretKey是否正确是否有SES服务权限

  4. 额度不足

    余额不足
    

    解决: 充值或检查免费额度


🚀 快速测试方案

方案1临时使用开发模式测试

如果发信地址未验证或需要快速测试登录功能,可以临时切换到开发模式:

  1. 修改配置文件

    tencent.ses.template-id=0
    
  2. 重新编译并启动

    mvn clean package
    java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
    
  3. 测试发送验证码

    • 会看到日志:开发模式:邮件验证码发送到: xxx@qq.com, 验证码: 123456
    • 从日志中获取验证码用于登录测试

方案2检查SES配置状态

  1. 访问SES控制台

  2. 确认以下状态:

    • newletter@vionow.com 状态为"已验证"
    • 模板ID 154360 状态为"已审核"
    • SES服务有可用额度

📝 诊断检查清单

请按照以下顺序检查:

  • 1. 配置检查

    • 配置文件 application-dev.properties 中存在 tencent.ses.template-id=154360
    • 没有多余空格或特殊字符
  • 2. 编译检查

    • 执行了 mvn clean package
    • 编译成功,没有错误
  • 3. 启动检查

    • 使用 --spring.profiles.active=dev 启动
    • 启动日志中没有配置相关的错误
  • 4. 日志检查

    • 重新启动后,测试发送验证码
    • 查看日志中是否有新的详细信息
  • 5. SES配置检查

    • 发信地址已验证
    • 模板ID已审核
    • 有可用额度

🔧 下一步操作

  1. 立即执行:

    cd demo
    mvn clean package
    java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
    
  2. 再次测试发送验证码

  3. 查看新的日志输出,告诉我你看到了什么日志信息

  4. 根据新的日志信息,我可以进一步帮你诊断问题


⚠️ 重要提示

当前代码已更新,添加了更详细的日志输出。请重新编译并启动服务,然后再次测试。新的日志会帮助我们准确定位问题。