You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask-Mail发送邮件遇ssl.SSLError错误的解决求助

解决Flask-Mail调用MailTrap时的SSL版本错误

问题分析

出现ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:997)错误,核心原因通常是SSL/TLS配置与邮件服务器端口不匹配、配置未正确加载,或是依赖库兼容性冲突导致的。

解决方案步骤

1. 确认环境变量已正确加载

确保Flask应用真正读取到了.env中的配置。如果使用python-dotenv,需在应用初始化阶段添加加载逻辑:

from dotenv import load_dotenv
import os

load_dotenv()  # 加载.env文件中的环境变量

app = Flask(__name__)
# 显式从环境变量读取配置并转换类型
app.config['MAIL_SERVER'] = os.getenv('MAIL_SERVER')
app.config['MAIL_PORT'] = int(os.getenv('MAIL_PORT'))
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.getenv('MAIL_PASSWORD')
app.config['MAIL_USE_SSL'] = os.getenv('MAIL_USE_SSL') == 'true'
app.config['MAIL_USE_TLS'] = os.getenv('MAIL_USE_TLS') == 'true'
app.config['MAIL_SENDER'] = os.getenv('MAIL_SENDER')  # 确保该变量在.env中已配置

很多时候错误源于配置未被正确读取,导致Flask-Mail使用了默认的SSL设置。

2. 验证Flask-Mail的初始化逻辑

检查gymanager/extensions/mailer.py中的邮件初始化代码,确保它正确绑定了应用配置:

from flask_mail import Mail

mail = Mail()

def init_app(app):
    mail.init_app(app)

并在应用工厂函数中调用mail.init_app(app),让mail对象能获取到正确的SSL和端口配置。

3. 使用MailTrap官方推荐的配置组合

MailTrap官方针对Flask-Mail的标准配置如下,优先使用这套配置测试:

MAIL_SERVER="sandbox.smtp.mailtrap.io"
MAIL_PORT=2525
MAIL_USERNAME="你的MailTrap用户名"
MAIL_PASSWORD="你的MailTrap密码"
MAIL_USE_SSL=false
MAIL_USE_TLS=true
MAIL_SENDER="no-reply@yourapp.com"  # 补充发件人配置

若仍报错,可切换到587端口(同样使用TLS):

MAIL_PORT=587
MAIL_USE_SSL=false
MAIL_USE_TLS=true

注意:禁止同时将MAIL_USE_SSL和MAIL_USE_TLS设为true,这会导致协议冲突。

4. 排查本地代理/防火墙干扰

如果开发环境使用了VPN、代理软件或防火墙,可能会拦截SMTP连接导致SSL版本协商失败:

  • 临时关闭代理工具后重试
  • 用telnet sandbox.smtp.mailtrap.io 2525测试端口连通性,若无法连接则说明是网络问题。

5. 调整cryptography库版本

部分场景下,SSL版本错误是cryptography库与Flask-Mail的兼容性问题导致的,可安装稳定版本:

pip uninstall cryptography -y
pip install cryptography==39.0.1

额外检查点

  • 确认MailTrap控制台中的用户名、密码无拼写错误
  • 确保MAIL_SENDER配置的邮箱格式合规,比如"Your App" <no-reply@yourapp.com>

内容的提问来源于stack exchange,提问作者Lucas Ferreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:27:03