在进行flask项目发送邮件的地方出现了这种错误,是什么问题呢
3条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
从你提供的信息来看,错误信息明确指出是 SSL 握手失败的问题:
[SSL: WRONG_VERSION_NUMBER] wrong version number
。这通常意味着客户端(在本例中是 Flask 应用)与邮件服务器(SMTP 服务器)之间的 SSL/TLS 版本不兼容。解决方案
SMTP 服务器可能不支持客户端尝试使用的 SSL/TLS 版本。QQ 邮箱的 SMTP 服务器通常要求 TLS 1.2 或更高版本。因此,你需要确保你的 Flask 应用在连接到 SMTP 服务器时使用正确的 SSL/TLS 版本。
修改
config.py
在你的配置文件
config.py
中,找到邮件配置的部分,将MAIL_USE_SSL
设置为False
,并设置MAIL_USE_TLS
为True
。同时,你可能需要调整MAIL_PORT
到一个 TLS 端口,通常是 587。# 邮件配置 MAIL_SERVER = 'smtp.qq.com' MAIL_PORT = 587 MAIL_USE_SSL = False MAIL_USE_TLS = True MAIL_USERNAME = 'your_email_address' MAIL_PASSWORD = 'your_email_password' MAIL_DEFAULT_SENDER = 'your_email_address'
发送邮件代码
确保在发送邮件时使用了正确的配置。下面是一个使用 Flask-Mail 的示例代码,它应该在更新配置后工作:
from flask import Flask from flask_mail import Mail, Message app = Flask(__name__) app.config.from_object('config') mail = Mail(app) @app.route('/mail/test') def mail_test(): message = Message(subject='邮箱测试', recipients=['2796004827@qq.com'], body='这是一条测试邮件') mail.send(message) return "邮件发送成功"
验证 SSL/TLS 版本
确保你的 Python 环境支持 TLS 1.2。你可以通过以下命令检查你的 OpenSSL 版本:
openssl version
如果版本过低,你可能需要升级 OpenSSL 或者更新你的 Python 环境。
其他注意事项
- 确保你的防火墙没有阻止对 SMTP 服务器的连接。
- 检查是否有任何网络代理或安全软件阻止了 SSL/TLS 连接。
- 如果你在使用虚拟环境,确保 Flask-Mail 和其他依赖项都在虚拟环境中安装。
按照以上步骤操作,你应该能解决 SSL 握手失败的问题。如果仍然遇到困难,进一步检查网络连接状态和服务器的 SSL/TLS 配置可能是必要的。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 在虚拟机环境下完成以下,要求截图!
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图
- ¥15 UE5.1局部变量对蓝图不可见