Ошибка SSL при отправке электронной почты с помощью Python (ОС Raspbian)

Я просто пишу этот код на Python под Raspbian OS:

import smtplib

fromaddr = '*****@hotmail.de'
toaddrs  = '*****@hotmail.de'
msg = 'Testmail'

username = '*****@hotmail.de'
password = '*****'

server = smtplib.SMTP('smtp.live.com',587)
server.ehlo()
server.starttls()
server.login(username, password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

И получите следующее сообщение об ошибке:

python ail.py
Traceback (most recent call last):
File "ail.py", line 14, in <module>
  server.login(username, password)
File "/usr/lib/python2.7/smtplib.py", line 601, in login
  AUTH_PLAIN + " " + encode_plain(user, password))
File "/usr/lib/python2.7/smtplib.py", line 385, in docmd
  return self.getreply()
File "/usr/lib/python2.7/smtplib.py", line 358, in getreply
  + str(e))
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: [Errno 1] _ssl.c:1359: 
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

В чем я виновата? Может ли кто-нибудь помочь мне - пожалуйста?

С уважением


person Kipcak08    schedule 23.12.2013    source источник
comment
@MaximeLorant: нет, это не дубликат; это новая проблема, в которую он пытался превратить этот вопрос после получения ответа на него.   -  person abarnert    schedule 24.12.2013
comment
@abarnert О, да, действительно ... Заголовок и пост почти одинаковы, я был сбит с толку ...   -  person Maxime Lorant    schedule 24.12.2013
comment
В любом случае, пожалуйста, попробуйте шаги теста из этого вопроса, а также попробуйте запустить свой код на своей настольной системе, чтобы увидеть, происходит ли что-то конкретное для Rasp.   -  person abarnert    schedule 24.12.2013
comment
так что у меня не было возможности отправить это проклятое письмо?   -  person Kipcak08    schedule 24.12.2013
comment
@ user1557170: Если есть ошибка с поддержкой SMTP SSL в Hotmail, и никто не удосужился найти обходной путь со стороны клиента в Python 2.7, и вы не хотите выполнять работу, чтобы попытаться отладить проблему самостоятельно, тогда я Думаю, вы этого не сделали.   -  person abarnert    schedule 24.12.2013
comment
Я делаю, чтобы попробовать это на себе. Теперь я попытался использовать свою учетную запись icloud и получил другое сообщение об ошибке: Traceback (последний последний вызов): файл ail.py, строка 15, в ‹module› server.sendmail(fromaddr, toaddrs, msg) File /usr/lib /python2.7/smtplib.py, строка 737, в sendmail вызывает SMTPDataError (код, соответственно) smtplib.SMTPDataError: (550, '5.7.0 Адрес отправителя не является одним из ваших адресов.')   -  person Kipcak08    schedule 24.12.2013
comment
проголосовать за открытие. @ m59: Проблемы разные (затенение модуля stdlib и ошибка ssl). Названия вопросов могут быть отредактированы, чтобы отразить это.   -  person jfs    schedule 24.12.2013


Ответы (1)


После того, как я вошел в систему http://live.com и подтвердил свою учетную запись; ваш код работал как есть на Ubuntu python 2.7 и python3.3:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Send email via live.com."""
import smtplib
from email.mime.text      import MIMEText
from email.header         import Header

login, password = ...

msg = MIMEText(u'body…', 'plain', 'utf-8')
msg['Subject'] = Header(u'subject…', 'utf-8')
msg['From'] = login
recipients = [login]
msg['To'] = ", ".join(recipients)

s = smtplib.SMTP('smtp.live.com', 587, timeout=10)  
s.set_debuglevel(1)
try:
    s.starttls() 
    s.login(login, password) 
    s.sendmail(msg['From'], recipients, msg.as_string())
finally:
    s.quit()

Проверьте, может ли openssl подключиться к нему (ca-certificates установлен и это не этот баг):

$ openssl s_client -starttls smtp -connect smtp.live.com:587

Если это успешно; вы можете заменить smtplib.SMTP.starttls() method (в подклассе) на установите соответствующие параметры ssl.

person jfs    schedule 24.12.2013