Index: Lib/smtplib.py =================================================================== --- Lib/smtplib.py (revision 60977) +++ Lib/smtplib.py (working copy) @@ -285,12 +285,15 @@ i = host.rfind(':') if i >= 0: host, port = host[:i], host[i+1:] - try: port = int(port) - except ValueError: - raise socket.error, "nonnumeric port" + + port = int(port) + if not port: port = self.default_port if self.debuglevel > 0: print>>stderr, 'connect:', (host, port) - self.sock = self._get_socket(host, port, self.timeout) + try: + self.sock = self._get_socket(host, port, self.timeout) + except socket.error, msg: + raise SMTPConnectError(msg.errno, msg.strerror) (code, msg) = self.getreply() if self.debuglevel > 0: print>>stderr, "connect:", msg return (code, msg) Index: Lib/test/test_smtplib.py =================================================================== --- Lib/test/test_smtplib.py (revision 60977) +++ Lib/test/test_smtplib.py (working copy) @@ -93,10 +93,10 @@ smtp.sock.close() def testNonnumericPort(self): - # check that non-numeric port raises socket.error - self.assertRaises(socket.error, smtplib.SMTP, + # check that non-numeric port raises ValueError + self.assertRaises(ValueError, smtplib.SMTP, "localhost", "bogus") - self.assertRaises(socket.error, smtplib.SMTP, + self.assertRaises(ValueError, smtplib.SMTP, "localhost:bogus") def testTimeoutDefault(self):