使用Python发送电子邮件时出现SSL错误(Raspbian OS)

时间:2013-12-23 23:53:19

标签: python email raspbian

我只是在Raspbian OS下用Python编写这段代码:

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

我的错是什么?有人可以帮帮我吗?

此致

1 个答案:

答案 0 :(得分: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参数。