Python Smtp SSL неправильная версия на Linux
Мой код для отправки писем через 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
1 ответ
Могу поспорить, что проблема на другой стороне провода. Привет, Microsoft!
Я пробовал войти в систему несколько раз, и вы мне не поверите, но некоторые серверы позволят мне войти, а другие - нет. Попробуй сделать 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)
Обновление: Хм, кажется, что это известная проблема с 1.0.1c.