Files
AIGC/demo/EMAIL_LOGIN_CONFIGURATION_CHECKLIST.md

11 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 - 发信地址(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 是否有效

  • 是否有SES服务访问权限

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

检查步骤:

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

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

当前配置:

  • 发信地址: noreply@vionow.com

需要操作:

验证步骤:

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

注意:

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

3. 邮件模板配置 ⚠️ 生产环境必需

当前状态:

  • template-id=0 - 开发模式

开发模式特点:

  • 不会实际发送邮件
  • 验证码在日志中显示
  • 适合本地测试

生产环境需要:

  • 创建邮件模板

创建步骤:

  1. 访问:https://console.cloud.tencent.com/ses/template
  2. 点击"创建模板"
  3. 选择模板类型(触发邮件或批量邮件)
  4. 填写模板内容,例如:
    您的AIGC平台验证码是{{code}}
    验证码有效期5分钟请勿泄露给他人。
    如果不是您本人操作,请忽略此邮件。
    
  5. 使用 {{code}} 作为验证码变量(必须使用这个变量名)
  6. 提交审核
  7. 等待审核通过通常需要1-2个工作日
  8. 获取模板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服务是否已开通

  • 是否有可用额度

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

检查步骤:

  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"}'
    
  • 查看日志

    • 应该看到:"开发模式:邮件验证码发送到: test@example.com, 验证码: 123456"
    • 记录验证码用于登录测试
  • 测试登录

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

生产模式测试:

  • 更新template-id配置
  • 重启服务
  • 发送测试邮件
  • 检查实际邮箱是否收到邮件

三、配置优先级

🔴 紧急(必须配置)

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

🟡 重要(建议配置)

  1. SES服务权限检查 - 确保账号有权限访问SES服务
  2. SES服务开通和额度 - 确保有可用配额
  3. 测试验证 - 确保功能正常

🟢 可选(开发环境)

  1. 开发模式 - 当前已配置,可直接使用

四、配置检查清单

开发环境配置状态

配置项 状态 说明
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:

  1. 验证发信地址
  2. 创建邮件模板并获取模板ID
  3. 更新 tencent.ses.template-id 配置
  4. 重启服务
  5. 测试实际发送邮件

七、下一步操作建议

立即可做(开发测试)

  1. 保持当前配置(开发模式)
  2. 启动服务测试登录功能
  3. 使用日志中的验证码进行测试

生产环境准备(如需要)

  1. ⚠️ 验证发信地址

    • 在SES控制台验证 noreply@vionow.com
  2. ⚠️ 创建邮件模板

    • 创建验证码邮件模板
    • 等待审核通过
    • 获取模板ID
  3. ⚠️ 更新生产环境配置

    • application-prod.properties 中添加SES配置
    • 设置环境变量
  4. ⚠️ 测试生产模式

    • 更新template-id配置
    • 重启服务
    • 测试实际发送邮件

八、相关文档链接


九、总结

当前状态

  • 开发环境配置已完成,可以直接启动测试
  • 开发模式已启用template-id=0不会实际发送邮件
  • ⚠️ 生产环境配置缺失需要添加SES配置

最小启动要求(开发模式)

  1. SecretID和SecretKey已配置
  2. From-email地址已配置
  3. Template-id=0开发模式已配置

生产环境要求

  1. ⚠️ 已验证的发信地址
  2. ⚠️ 已审核通过的邮件模板
  3. ⚠️ 生产环境配置文件中的SES配置
  4. ⚠️ 有效的SecretID/SecretKey和SES服务权限

当前可以: 直接在开发模式下启动并测试登录功能(验证码在日志中显示)

如需实际发送邮件: 需要完成上述生产环境配置项