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

Python 3.10发送邮件遇SSL错误:EOF违反协议问题求助

Python 3.10 发送邮件遇 SSL.SSLEOFError 问题(Python 3.8 正常,公司代理环境)

问题背景

身处公司代理环境,Python 3.8 下邮件发送功能可正常运行,但升级到 Python 3.10 后触发 SSL 握手错误,无法完成邮件发送。

代码片段

def send_email():
    text = self.message.as_string()
    with smtplib.SMTP(smtp_host, smtp_port) as server:
        server.ehlo()
        if server.has_extn('STARTTLS'):
            server.starttls()
            server.ehlo()
            print(f"Sending email")
            server.sendmail(sender_email, receiver_email, text)
            print('Email sent')

报错信息

File "path\mail.py", line 102, in send_email
server.starttls()
File "path\env\lib\smtplib.py", line 790, in starttls
self.sock = context.wrap_socket(self.sock,
File "path\env\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "path\env\lib\ssl.py", line 1071, in _create
self.do_handshake()
File "path\env\lib\ssl.py", line 1342, in do_handshake
self._sslobj.do_handshake()
ssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1007)

排查更新

已初步定位问题源于 OpenSSL 版本差异:

  • Python 3.8 默认依赖低版本 OpenSSL,默认加密套件为 ssl._DEFAULT_CIPHERS = ('DES-CBC3-SHA')(属于弱加密套件)
  • 当前 Python 3.10 搭配 OpenSSL 3.0.10,推测握手失败与加密套件、认证协议不兼容有关

目前考虑将 OpenSSL 降级到 1.1.1 版本(已知该版本可正常运行),但这种方案并不推荐,想请教有没有更合适的修复方法?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:04:58