diff -r c43362d35d8d Lib/smtplib.py --- a/Lib/smtplib.py Fri Jul 04 17:00:25 2014 -0700 +++ b/Lib/smtplib.py Wed Jul 23 01:13:34 2014 +0200 @@ -937,9 +937,18 @@ new_socket = socket.create_connection((host, port), timeout, self.source_address) server_hostname = self._host if ssl.HAS_SNI else None - new_socket = self.context.wrap_socket(new_socket, - server_hostname=server_hostname) - return new_socket + try: + ssl_socket = self.context.wrap_socket( + new_socket, server_hostname=server_hostname) + except: + new_socket.close() + raise + try: + ssl_socket.do_handshake() + except: + ssl_socket.close() + raise + return ssl_socket __all__.append("SMTP_SSL")