2013-12-23 18 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參數。