207 lines
5.3 KiB
Markdown
207 lines
5.3 KiB
Markdown
|
|
# 邮件发送问题诊断指南
|
|||
|
|
|
|||
|
|
## 🔍 问题分析
|
|||
|
|
|
|||
|
|
根据你提供的日志,发现了以下情况:
|
|||
|
|
|
|||
|
|
### 日志分析
|
|||
|
|
|
|||
|
|
**你的日志显示:**
|
|||
|
|
```
|
|||
|
|
INFO ... VerificationCodeService : 邮件验证码发送成功,邮箱: 984523799@qq.com
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**但是缺少以下关键日志:**
|
|||
|
|
- ❌ 没有看到 "当前邮件模板ID配置: xxx"
|
|||
|
|
- ❌ 没有看到 "未配置邮件模板ID,使用开发模式"(开发模式警告)
|
|||
|
|
- ❌ 没有看到 "使用生产模式发送邮件"(生产模式日志)
|
|||
|
|
- ❌ 没有看到 "开始发送邮件,收件人: ..."(TencentSesMailService日志)
|
|||
|
|
|
|||
|
|
### 可能的原因
|
|||
|
|
|
|||
|
|
1. **配置值未正确读取**
|
|||
|
|
- `template-id=154360` 可能没有被正确读取
|
|||
|
|
- 默认值 `0` 被使用,进入了开发模式
|
|||
|
|
- 但开发模式的警告日志也没有出现
|
|||
|
|
|
|||
|
|
2. **服务使用旧版本代码**
|
|||
|
|
- 可能运行的jar包是旧版本
|
|||
|
|
- 需要重新编译并启动
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🛠️ 诊断步骤
|
|||
|
|
|
|||
|
|
### 步骤1:检查配置是否正确读取
|
|||
|
|
|
|||
|
|
我已经更新了代码,添加了更详细的日志。请:
|
|||
|
|
|
|||
|
|
1. **重新编译项目**
|
|||
|
|
```bash
|
|||
|
|
cd demo
|
|||
|
|
mvn clean package
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **重新启动服务**
|
|||
|
|
```bash
|
|||
|
|
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` 中的配置:
|
|||
|
|
|
|||
|
|
```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. **修改配置文件**
|
|||
|
|
```properties
|
|||
|
|
tencent.ses.template-id=0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **重新编译并启动**
|
|||
|
|
```bash
|
|||
|
|
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控制台**
|
|||
|
|
- 发信地址管理:https://console.cloud.tencent.com/ses/address
|
|||
|
|
- 邮件模板管理:https://console.cloud.tencent.com/ses/template
|
|||
|
|
|
|||
|
|
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. **立即执行:**
|
|||
|
|
```bash
|
|||
|
|
cd demo
|
|||
|
|
mvn clean package
|
|||
|
|
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **再次测试发送验证码**
|
|||
|
|
|
|||
|
|
3. **查看新的日志输出**,告诉我你看到了什么日志信息
|
|||
|
|
|
|||
|
|
4. **根据新的日志信息,我可以进一步帮你诊断问题**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ 重要提示
|
|||
|
|
|
|||
|
|
**当前代码已更新,添加了更详细的日志输出。请重新编译并启动服务,然后再次测试。新的日志会帮助我们准确定位问题。**
|
|||
|
|
|