我敢打赌,问题出在电线的另一端。你好,微软!
我已经尝试登录了很多次,但你不会相信我,但有些服务器会让我登录,而有些则不会。
尝试使用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。