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