11 KiB
11 KiB
邮件登录模块配置清单
一、已配置项 ✅
1. 开发环境配置(application-dev.properties)
- ✅
tencent.ses.secret-id- SecretID(已配置) - ✅
tencent.ses.secret-key- SecretKey(已配置) - ✅
tencent.ses.region- 服务区域(ap-beijing) - ✅
tencent.ses.from-email- 发信地址(noreply@vionow.com) - ✅
tencent.ses.from-name- 发件人名称(AIGC平台) - ✅
tencent.ses.template-id- 模板ID(当前为0,开发模式)
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 是否有效
- 检查密钥是否过期或被撤销
- 访问:https://console.cloud.tencent.com/cam/capi
-
是否有SES服务访问权限
- 子账号需要有SES(邮件推送)服务的访问权限
- 如果没有权限,需要在主账号中授权
检查步骤:
- 登录腾讯云控制台
- 进入"访问管理" → "API密钥管理"
- 检查密钥状态
- 检查子账号权限策略
2. 发信地址验证 ⚠️ 重要(生产环境必需)
当前配置:
- 发信地址:
noreply@vionow.com
需要操作:
- 确认发信地址是否已验证
- 访问:https://console.cloud.tencent.com/ses/address
- 检查
noreply@vionow.com的状态 - 如果状态为"未验证"或"验证失败":
验证步骤:
- 进入SES控制台 → "发信地址"
- 点击"创建发信地址"或编辑现有地址
- 输入邮箱:
noreply@vionow.com - 腾讯云会发送验证邮件到该邮箱
- 点击邮件中的验证链接完成验证
- 确认状态变为"已验证"
注意:
- ⚠️ 只有验证通过的邮箱才能发送邮件
- ⚠️ 开发模式(template-id=0)不需要验证也能测试,但不会实际发邮件
- ⚠️ 生产模式必须有已验证的发信地址
3. 邮件模板配置 ⚠️ 生产环境必需
当前状态:
template-id=0- 开发模式
开发模式特点:
- ✅ 不会实际发送邮件
- ✅ 验证码在日志中显示
- ✅ 适合本地测试
生产环境需要:
- 创建邮件模板
创建步骤:
- 访问:https://console.cloud.tencent.com/ses/template
- 点击"创建模板"
- 选择模板类型(触发邮件或批量邮件)
- 填写模板内容,例如:
您的AIGC平台验证码是:{{code}} 验证码有效期5分钟,请勿泄露给他人。 如果不是您本人操作,请忽略此邮件。 - 使用
{{code}}作为验证码变量(必须使用这个变量名) - 提交审核
- 等待审核通过(通常需要1-2个工作日)
- 获取模板ID(例如:
12345)
更新配置:
# 将开发模式改为生产模式
tencent.ses.template-id=12345 # 替换为实际的模板ID
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=noreply@vionow.com
export TENCENT_SES_TEMPLATE_ID=你的模板ID
5. SES服务开通和额度 ⚠️ 重要
需要确认:
-
SES服务是否已开通
- 访问:https://console.cloud.tencent.com/ses
- 检查服务状态
-
是否有可用额度
- 检查账户余额或免费额度
- 确认是否有足够的邮件发送配额
- 查看计费信息
检查步骤:
- 登录腾讯云控制台
- 进入SES服务控制台
- 查看"概览"页面的配额和用量信息
- 确认是否有可用额度
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"}' -
查看日志
- 应该看到:"开发模式:邮件验证码发送到: test@example.com, 验证码: 123456"
- 记录验证码用于登录测试
-
测试登录
- 访问登录页面
- 输入邮箱和验证码
- 验证登录功能
生产模式测试:
- 更新template-id配置
- 重启服务
- 发送测试邮件
- 检查实际邮箱是否收到邮件
三、配置优先级
🔴 紧急(必须配置)
- 发信地址验证 - 生产环境必须验证才能发送邮件
- 邮件模板创建 - 生产环境必须配置模板ID
- 生产环境配置 -
application-prod.properties缺少SES配置
🟡 重要(建议配置)
- SES服务权限检查 - 确保账号有权限访问SES服务
- SES服务开通和额度 - 确保有可用配额
- 测试验证 - 确保功能正常
🟢 可选(开发环境)
- 开发模式 - 当前已配置,可直接使用
四、配置检查清单
开发环境配置状态
| 配置项 | 状态 | 说明 |
|---|---|---|
| SecretID | ✅ 已配置 | 需确认有效性和权限 |
| SecretKey | ✅ 已配置 | 需确认有效性 |
| Region | ✅ 已配置 | ap-beijing |
| From-email | ✅ 已配置 | noreply@vionow.com(需确认已验证) |
| From-name | ✅ 已配置 | AIGC平台 |
| Template-id | ⚠️ 开发模式 | 当前为0,生产环境需配置实际ID |
生产环境配置状态
| 配置项 | 状态 | 说明 |
|---|---|---|
| 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: 这是正常的!开发模式(template-id=0)不会实际发送邮件,验证码会在日志中显示。
Q2: 发送失败 - 认证错误
InvalidSecretId.InvalidSignature
解决:
- 检查SecretID和SecretKey是否正确
- 确认密钥是否有SES服务权限
- 检查密钥是否过期
Q3: 发送失败 - 发信地址未验证
InvalidParameter.EmailAddressNotVerified
解决:
- 在SES控制台验证发信地址
- 检查
tencent.ses.from-email配置是否正确 - 注意:开发模式(template-id=0)不需要验证也能测试
Q4: 发送失败 - 模板不存在
ResourceNotFound.TemplateNotFound
解决:
- 确认模板ID是否正确
- 检查模板是否已审核通过
- 确认模板区域与配置的region一致
Q5: 如何切换到生产模式?
A:
- 验证发信地址
- 创建邮件模板并获取模板ID
- 更新
tencent.ses.template-id配置 - 重启服务
- 测试实际发送邮件
七、下一步操作建议
立即可做(开发测试)
- ✅ 保持当前配置(开发模式)
- ✅ 启动服务测试登录功能
- ✅ 使用日志中的验证码进行测试
生产环境准备(如需要)
-
⚠️ 验证发信地址
- 在SES控制台验证
noreply@vionow.com
- 在SES控制台验证
-
⚠️ 创建邮件模板
- 创建验证码邮件模板
- 等待审核通过
- 获取模板ID
-
⚠️ 更新生产环境配置
- 在
application-prod.properties中添加SES配置 - 设置环境变量
- 在
-
⚠️ 测试生产模式
- 更新template-id配置
- 重启服务
- 测试实际发送邮件
八、相关文档链接
- 腾讯云SES控制台: https://console.cloud.tencent.com/ses
- 发信地址管理: https://console.cloud.tencent.com/ses/address
- 邮件模板管理: https://console.cloud.tencent.com/ses/template
- API密钥管理: https://console.cloud.tencent.com/cam/capi
- SES文档: https://cloud.tencent.com/document/product/1288
- 邮箱验证登录指南:
EMAIL_VERIFICATION_LOGIN_GUIDE.md - SES启动检查清单:
TENCENT_SES_STARTUP_CHECKLIST.md
九、总结
当前状态
- ✅ 开发环境配置已完成,可以直接启动测试
- ✅ 开发模式已启用(template-id=0),不会实际发送邮件
- ⚠️ 生产环境配置缺失,需要添加SES配置
最小启动要求(开发模式)
- ✅ SecretID和SecretKey(已配置)
- ✅ From-email地址(已配置)
- ✅ Template-id=0(开发模式,已配置)
生产环境要求
- ⚠️ 已验证的发信地址
- ⚠️ 已审核通过的邮件模板
- ⚠️ 生产环境配置文件中的SES配置
- ⚠️ 有效的SecretID/SecretKey和SES服务权限
当前可以: 直接在开发模式下启动并测试登录功能(验证码在日志中显示)
如需实际发送邮件: 需要完成上述生产环境配置项