【问题标题】:Python Smtp SSL wrong version on linuxlinux上的Python Smtp SSL错误版本
【发布时间】:2023-03-22 09:07:02
【问题描述】:

我通过 msft outlook.com 发送电子邮件的代码适用于 Windows,但不适用于我的 linux 机器。知道如何解决这个问题吗?

import smtplib
smtp = smtplib.SMTP('smtp.live.com', port=587)
smtp.starttls()
smtp.login(username, password)

SMTPServerDisconnected: Connection unexpectedly closed: 
[Errno 1] _ssl.c:1359: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

编辑:更多细节:gentoo linux 与 python 2.7.3、openssl 0.9.8x 和 1.0.1c

【问题讨论】:

  • 你的python -Vopenssl version是什么?
  • @korylprince python 2.7.3,openssl 0.9.8x
  • 我唯一能建议的就是升级你的 openssl。你的代码对我来说很好。
  • @korylprince 你的 openssl 版本是什么?
  • OpenSSL 1.0.1 14 Mar 2012 在 Ubuntu 12.04 上

标签: python ssl smtp


【解决方案1】:

我敢打赌,问题出在电线的另一端。你好,微软!

我已经尝试登录了很多次,但你不会相信我,但有些服务器会让我登录,而有些则不会。 尝试使用smtp.ehlo() 来查找服务器的主机名(顺便说一下,您必须在会话开始时发出EHLO,并在STARTTLS 之后立即发出)。

他们所有的服务器都有名称BLU0-SMTP<somenumber>phx.gbl。信不信由你,名称中包含 两位 位的服务器可以,但名称中包含 三位 位的服务器则不行。

In [52]: s = smtplib.SMTP('smtp.live.com', port=587)

In [53]: s.ehlo()
Out[53]:
(250,
 'BLU0-SMTP17.phx.gbl Hello [188.134.8.114]\nTURN\nSIZE 41943040\nETRN\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\n8bitmime\nBINARYMIME\nCHUNKING\nVRFY\nTLS\nSTARTTLS\nOK')

In [54]: s.starttls()
Out[54]: (220, '2.0.0 SMTP server ready')

In [55]: s.ehlo()
Out[55]:
(250,
 'BLU0-SMTP17.phx.gbl Hello [188.134.8.114]\nTURN\nSIZE 41943040\nETRN\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\n8bitmime\nBINARYMIME\nCHUNKING\nVRFY\nAUTH LOGIN PLAIN\nOK')

In [56]: s.login(login, password)
Out[56]: (235, '2.7.0 Authentication succeeded')
In [42]: s = smtplib.SMTP('smtp.live.com', port=587)

In [43]: s.ehlo()
Out[43]:
(250,
 'BLU0-SMTP116.phx.gbl Hello [188.134.8.114]\nTURN\nSIZE 41943040\nETRN\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\n8bitmime\nBINARYMIME\nCHUNKING\nVRFY\nTLS\nSTARTTLS\nOK')

In [44]: s.starttls()
Out[44]: (220, '2.0.0 SMTP server ready')

In [45]: s.ehlo()
Out[45]:
(250,
 'BLU0-SMTP116.phx.gbl Hello [188.134.8.114]\nTURN\nSIZE 41943040\nETRN\nPIPELINING\nDSN\nENHANCEDSTATUSCODES\n8bitmime\nBINARYMIME\nCHUNKING\nVRFY\nAUTH LOGIN PLAIN\nOK')

In [46]: s.login(login, password)
---------------------------------------------------------------------------
SMTPServerDisconnected                    Traceback (most recent call last)

更新:嗯,好像是known issue with 1.0.1c

【讨论】:

  • 是的,这就是问题所在。我降级到 1.0.0j 并且 smtp 现在可以工作了。
  • @kefeizhou 为什么不升级到1.0.1e呢?
  • @kirelagin,我遇到了与 1.0.1e 相同的问题。
猜你喜欢
  • 2012-04-15
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2019-10-13
  • 2017-04-22
  • 2010-12-06
  • 2016-07-01
相关资源
最近更新 更多