diff -r e28004fb30c0 Lib/smtplib.py --- a/Lib/smtplib.py Sun Jun 22 20:26:07 2014 -0700 +++ b/Lib/smtplib.py Mon Jun 23 18:58:08 2014 -0400 @@ -784,9 +784,19 @@ if self.debuglevel > 0: print>>stderr, 'connect:', (host, port) new_socket = socket.create_connection((host, port), timeout) - new_socket = ssl.wrap_socket(new_socket, self.keyfile, self.certfile) + try: + ssl_socket = ssl.wrap_socket(new_socket, self.keyfile, self.certfile) + except: + new_socket.close() + raise + try: + ssl_socket.do_handshake() + except: + ssl_socket.close() + raise + self.file = SSLFakeFile(new_socket) - return new_socket + return ssl_socket __all__.append("SMTP_SSL")