最近、いくつかの Python スクリプトを実行するために Raspberry Pi を購入しましたが、それを移植すると、Windows Live 経由で電子メールを送信するために作成した関数が、ハンドシェイクが成功した後に突然 SSL エラーを出し始めました。
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
広範囲に検索した後、同じエラーを抱えている多くの人を見つけましたが、すべて非常に異なる状況にありました. 私が見つけた最も関連性の高いことは、OpenSSL の特定のバージョンの問題であると思われることでしたが、Pi (1.0.1e) で実行されているバージョンについては何も見つかりませんでした。
関数(Win7で完全に正常に動作します):
def wlive(adr_to, adr_fro, adr_pass, adr_subj, adr_file):
saveout = smtplib.stderr
logger = open('wlive.log', 'w')
smtplib.stderr = logger
msg = MIMEMultipart()
msg['Subject'] = adr_subj
msg['From'] = adr_fro
msg['To'] = adr_to
if adr_file != None:
# subtype recognition based on extension
filext = os.path.splitext(adr_file)[1]
if filext == '.png':
subt = 'png'
else:
subt = 'jpeg'
fp = open(adr_file, 'rb')
img = MIMEImage(fp.read(), subt)
fp.close()
msg.attach(img)
try:
server = smtplib.SMTP('smtp.live.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(adr_fro, adr_pass)
server.sendmail(adr_fro, adr_to, msg.as_string())
server.quit()
return True
except Exception, e:
print 'wlive exception:\n\n', str(e)
return False
smtplib.stderr = saveout
logger.close()
完全に更新およびアップグレードされた Raspbian "Wheezy" イメージと Python 2.7.3 を実行しています。