2013-12-23 17 views
2

我只是写这段代码在Python下Raspbian OS:SSL错误,同时发送邮件与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 

什么是我的错?有人能帮助我 - 请吗?

问候

+0

你是什么意思? – Kipcak08

+0

@MimeimeLorant:不,它不是重复;这是他在得到答案之后试图改变这个问题的新问题。 – abarnert

+0

@abarnert噢是的确的...标题和帖子几乎相同,我很困惑... –

回答

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,它不是this bug):

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

如果它是成功的;您可以替换smtplib.SMTP.starttls() method(在子类中)来设置适当的ssl参数。