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.

Другие вопросы по тегам