92 lines
2.3 KiB
Markdown
Executable File
92 lines
2.3 KiB
Markdown
Executable File
# InfoGenie 邮件服务修复说明
|
||
|
||
## 修复内容
|
||
|
||
### 问题描述
|
||
原始的 `email_service.py` 中的邮件发送功能存在问题,无法正常发送验证码邮件。
|
||
|
||
### 修复方案
|
||
参考成功的 `QQEmailSendAPI.py` 实现,对 `email_service.py` 进行了以下修复:
|
||
|
||
1. **SMTP连接方式优化**
|
||
- 将 `with smtplib.SMTP_SSL()` 改为直接使用 `smtplib.SMTP_SSL()`
|
||
- 显式调用 `smtp_obj.quit()` 关闭连接
|
||
|
||
2. **邮件头设置优化**
|
||
- 确保 `From` 字段直接使用邮箱地址,不使用 `Header` 包装
|
||
- 保持与成功实现的一致性
|
||
|
||
3. **错误处理增强**
|
||
- 添加了针对 `SMTPAuthenticationError` 的专门处理
|
||
- 添加了针对 `SMTPConnectError` 的专门处理
|
||
- 提供更详细的错误信息
|
||
|
||
4. **调试信息优化**
|
||
- 添加了适量的日志输出用于问题诊断
|
||
- 移除了生产环境不安全的验证码返回
|
||
|
||
## 配置要求
|
||
|
||
### 环境变量
|
||
确保设置以下环境变量:
|
||
```bash
|
||
MAIL_USERNAME=your-qq-email@qq.com
|
||
MAIL_PASSWORD=your-qq-auth-code
|
||
```
|
||
|
||
### QQ邮箱授权码
|
||
1. 登录QQ邮箱
|
||
2. 进入设置 -> 账户
|
||
3. 开启SMTP服务
|
||
4. 获取授权码(不是QQ密码)
|
||
|
||
## 使用方法
|
||
|
||
### 发送验证码
|
||
```python
|
||
from modules.email_service import send_verification_email
|
||
|
||
# 发送注册验证码
|
||
result = send_verification_email('user@qq.com', 'register')
|
||
|
||
# 发送登录验证码
|
||
result = send_verification_email('user@qq.com', 'login')
|
||
```
|
||
|
||
### 验证验证码
|
||
```python
|
||
from modules.email_service import verify_code
|
||
|
||
# 验证用户输入的验证码
|
||
result = verify_code('user@qq.com', '123456')
|
||
```
|
||
|
||
## 测试
|
||
|
||
运行测试脚本验证功能:
|
||
```bash
|
||
cd backend
|
||
python test/test_email_fix.py
|
||
```
|
||
|
||
## 支持的邮箱
|
||
|
||
目前仅支持QQ邮箱系列:
|
||
- @qq.com
|
||
- @vip.qq.com
|
||
- @foxmail.com
|
||
|
||
## 注意事项
|
||
|
||
1. **安全性**:验证码不会在API响应中返回,仅通过邮件发送
|
||
2. **有效期**:验证码有效期为5分钟
|
||
3. **尝试次数**:每个验证码最多可尝试验证3次
|
||
4. **频率限制**:建议添加发送频率限制防止滥用
|
||
|
||
## 修复文件
|
||
|
||
- `backend/modules/email_service.py` - 主要修复文件
|
||
- `backend/test/test_email_fix.py` - 测试脚本
|
||
- `backend/邮件服务修复说明.md` - 本说明文档
|
||
|
||
修复完成后,邮件发送功能已正常工作,可以成功发送注册和登录验证码邮件。 |