如何解决Flask密码重置应用中的ConnectionRefusedError[WinError10061]
解决Flask密码重置邮件发送的ConnectionRefusedError问题
这个错误本质是Flask应用无法连接到配置的SMTP邮件服务器,以下是具体排查和解决步骤:
核对邮件服务商的SMTP配置
不同邮箱的SMTP参数差异很大,必须严格对应:- 比如QQ邮箱:服务器
smtp.qq.com,端口465(SSL)或587(TLS),需开启SMTP服务并使用专用授权码作为密码(不是登录密码); - 比如Gmail:服务器
smtp.gmail.com,端口587(TLS),需开启“不太安全的应用访问”或使用应用专用密码(如果开启了两步验证); - 确保配置参数无拼写错误,比如
MAIL_SERVER、MAIL_PORT、MAIL_USE_TLS/MAIL_USE_SSL这些键名要完全正确,Flask配置大小写敏感。
- 比如QQ邮箱:服务器
检查本地网络与防火墙
- 临时关闭本地防火墙或杀毒软件测试,如果能正常发送,说明是安全软件拦截了连接,给Flask应用添加防火墙允许规则即可;
- 确认所在网络没有屏蔽SMTP常用端口(587、465),部分企业或校园网络会限制这类端口的外部访问。
开发阶段用本地测试服务器替代真实邮箱
不需要真实邮箱就能调试邮件功能:- 打开命令行,运行:
python -m smtpd -n -c DebuggingServer localhost:1025 - 修改Flask配置:
app.config.update( MAIL_SERVER='localhost', MAIL_PORT=1025, MAIL_USE_TLS=False, MAIL_USE_SSL=False, MAIL_USERNAME=None, MAIL_PASSWORD=None )
发送的邮件会直接输出到命令行窗口,方便验证邮件内容和流程是否正确。
- 打开命令行,运行:
验证SMTP服务器的可访问性
用telnet命令测试网络连通性,比如测试QQ邮箱SSL端口:telnet smtp.qq.com 465。如果连接失败,说明网络或服务器端存在问题;如果能正常连接,再回头检查代码中的配置细节。
内容的提问来源于stack exchange,提问作者wassim meddeb
相关产品推荐
相关产品推荐

