# 邮件登录模块配置清单 ## 一、已配置项 ✅ ### 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(邮件推送)服务的访问权限 - 如果没有权限,需要在主账号中授权 **检查步骤:** 1. 登录腾讯云控制台 2. 进入"访问管理" → "API密钥管理" 3. 检查密钥状态 4. 检查子账号权限策略 --- ### 2. 发信地址验证 ⚠️ **重要(生产环境必需)** **当前配置:** - 发信地址: `noreply@vionow.com` **需要操作:** - [ ] **确认发信地址是否已验证** - 访问:https://console.cloud.tencent.com/ses/address - 检查 `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`) **更新配置:** ```properties # 将开发模式改为生产模式 tencent.ses.template-id=12345 # 替换为实际的模板ID ``` --- ### 4. 生产环境配置 ⚠️ **缺失** **当前状态:** `application-prod.properties` 中**没有腾讯云SES配置** **需要添加:** - [ ] **在生产环境配置文件中添加SES配置** **操作步骤:** 在 `demo/src/main/resources/application-prod.properties` 中添加: ```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} ``` **环境变量设置:** ```bash 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 - 检查服务状态 - [ ] **是否有可用额度** - 检查账户余额或免费额度 - 确认是否有足够的邮件发送配额 - 查看计费信息 **检查步骤:** 1. 登录腾讯云控制台 2. 进入SES服务控制台 3. 查看"概览"页面的配额和用量信息 4. 确认是否有可用额度 --- ### 6. 测试验证 ⚠️ **重要** **开发模式测试:** - [ ] **启动服务并测试** ```bash cd demo ./mvnw spring-boot:run ``` - [ ] **测试发送验证码** ```bash 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配置 ### 🟡 重要(建议配置) 4. **SES服务权限检查** - 确保账号有权限访问SES服务 5. **SES服务开通和额度** - 确保有可用配额 6. **测试验证** - 确保功能正常 ### 🟢 可选(开发环境) 7. **开发模式** - 当前已配置,可直接使用 --- ## 四、配置检查清单 ### 开发环境配置状态 | 配置项 | 状态 | 说明 | |--------|------|------| | 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 | --- ## 五、快速检查命令 ### 检查配置文件 ```bash # 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" ``` ### 测试邮件发送功能 ```bash # 开发模式测试(不会实际发送邮件) curl -X POST http://localhost:8080/api/verification/email/send \ -H "Content-Type: application/json" \ -d '{"email":"test@example.com"}' # 检查日志中的验证码 # 应该看到:开发模式:邮件验证码发送到: test@example.com, 验证码: XXXXXX ``` ### 测试登录功能 ```bash # 使用开发接口设置验证码(开发模式) 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配置 - 重启服务 - 测试实际发送邮件 --- ## 八、相关文档链接 - **腾讯云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配置 ### 最小启动要求(开发模式) 1. ✅ SecretID和SecretKey(已配置) 2. ✅ From-email地址(已配置) 3. ✅ Template-id=0(开发模式,已配置) ### 生产环境要求 1. ⚠️ 已验证的发信地址 2. ⚠️ 已审核通过的邮件模板 3. ⚠️ 生产环境配置文件中的SES配置 4. ⚠️ 有效的SecretID/SecretKey和SES服务权限 **当前可以:** 直接在开发模式下启动并测试登录功能(验证码在日志中显示) **如需实际发送邮件:** 需要完成上述生产环境配置项