本系统支持通过SMTP协议发送验证码邮件,支持主流邮件服务提供商,包括QQ邮箱、Gmail、163邮箱等。
在项目根目录 /home/ronghanji/api/API-TRM/rhj/backend/
下创建 .env
文件(如果不存在),参考 .env.example
文件。
MAIL_SERVER=smtp.qq.com MAIL_PORT=587 MAIL_USE_TLS=true MAIL_USERNAME=your_email@qq.com MAIL_PASSWORD=your_app_password MAIL_DEFAULT_SENDER=your_email@qq.com
QQ邮箱授权码获取方法:
MAIL_SERVER=smtp.gmail.com MAIL_PORT=587 MAIL_USE_TLS=true MAIL_USERNAME=your_email@gmail.com MAIL_PASSWORD=your_app_password MAIL_DEFAULT_SENDER=your_email@gmail.com
Gmail应用密码获取方法:
MAIL_SERVER=smtp.163.com MAIL_PORT=25 MAIL_USE_TLS=false MAIL_USERNAME=your_email@163.com MAIL_PASSWORD=your_email_password MAIL_DEFAULT_SENDER=your_email@163.com
163邮箱客户端授权密码获取方法:
MAIL_SERVER=your_company_smtp_server MAIL_PORT=587 MAIL_USE_TLS=true MAIL_USERNAME=your_email@company.com MAIL_PASSWORD=your_password MAIL_DEFAULT_SENDER=your_email@company.com
# 数据库配置 SQLURL=mysql+pymysql://username:password@localhost:3306/redbook SQLPORT=3306 SQLNAME=redbook SQLUSER=root SQLPWD=123456 # JWT密钥 JWT_SECRET_KEY=your-jwt-secret-key-here # Flask密钥 SECRET_KEY=your-flask-secret-key-here # 邮件服务配置(选择一种) MAIL_SERVER=smtp.qq.com MAIL_PORT=587 MAIL_USE_TLS=true MAIL_USERNAME=your_email@qq.com MAIL_PASSWORD=your_qq_auth_code MAIL_DEFAULT_SENDER=your_email@qq.com
创建一个测试脚本来验证邮件配置是否正确:
# test_email.py import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) from config import Config from app.functions.FAuth import FAuth from app.models import db from app import create_app def test_email_config(): """测试邮件配置""" app = create_app() with app.app_context(): # 检查配置 print("邮件服务器配置:") print(f"MAIL_SERVER: {Config.MAIL_SERVER}") print(f"MAIL_PORT: {Config.MAIL_PORT}") print(f"MAIL_USE_TLS: {Config.MAIL_USE_TLS}") print(f"MAIL_USERNAME: {Config.MAIL_USERNAME}") print(f"MAIL_DEFAULT_SENDER: {Config.MAIL_DEFAULT_SENDER}") if not all([Config.MAIL_USERNAME, Config.MAIL_PASSWORD, Config.MAIL_DEFAULT_SENDER]): print("❌ 邮件配置不完整!") return False # 发送测试邮件 auth = FAuth(db.session) result = auth.send_verification_email( email="test@example.com", # 替换为您的测试邮箱 verification_type="register" ) if result['success']: print("✅ 邮件配置正确,测试邮件发送成功!") return True else: print(f"❌ 邮件发送失败: {result['message']}") return False if __name__ == "__main__": test_email_config()
cd /home/ronghanji/api/API-TRM/rhj/backend python test_email.py
原因: 用户名或密码错误 解决方案:
原因: 网络问题或服务器地址错误 解决方案:
原因: TLS配置问题 解决方案:
原因: 邮件服务商限制发送频率 解决方案:
如果需要更高的可靠性和发送量,建议使用专业邮件服务:
这些服务通常提供更好的送达率和更高的发送限制。