diff -r ae1d34142a2a Doc/library/smtplib.rst --- a/Doc/library/smtplib.rst Wed Jan 09 22:04:35 2013 -0800 +++ b/Doc/library/smtplib.rst Fri Jan 11 08:39:23 2013 +0000 @@ -148,8 +148,9 @@ .. method:: SMTP.set_debuglevel(level) - Set the debug output level. A true value for *level* results in debug messages - for connection and for all messages sent to and received from the server. + Set the debug output level. A value of 1 (or "true" for *level* results in debug + messages for connection and for all messages sent to and received from the server. + A value of 2 for *level* results in these debug messages being timestamped. .. method:: SMTP.connect([host[, port]]) diff -r ae1d34142a2a Lib/smtplib.py --- a/Lib/smtplib.py Wed Jan 09 22:04:35 2013 -0800 +++ b/Lib/smtplib.py Fri Jan 11 08:39:23 2013 +0000 @@ -46,6 +46,7 @@ import email.utils import base64 import hmac +import datetime from email.base64mime import encode as encode_base64 from sys import stderr @@ -280,7 +281,10 @@ # This makes it simpler for SMTP_SSL to use the SMTP connect code # and just alter the socket connection bit. if self.debuglevel > 0: - print>>stderr, 'connect:', (host, port) + debugmsg = 'connect:' + if self-debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, (host, port) return socket.create_connection((port, host), timeout) def connect(self, host='localhost', port=0): @@ -305,17 +309,26 @@ if not port: port = self.default_port if self.debuglevel > 0: - print>>stderr, 'connect:', (host, port) + debugmsg = 'connect:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, (host, port) self.sock = self._get_socket(host, port, self.timeout) (code, msg) = self.getreply() if self.debuglevel > 0: - print>>stderr, "connect:", msg + debugmsg = 'connect:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, msg return (code, msg) def send(self, str): """Send `str' to the server.""" if self.debuglevel > 0: - print>>stderr, 'send:', repr(str) + debugmsg = 'send:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, repr(str) if hasattr(self, 'sock') and self.sock: try: self.sock.sendall(str) @@ -360,7 +373,10 @@ self.close() raise SMTPServerDisconnected("Connection unexpectedly closed") if self.debuglevel > 0: - print>>stderr, 'reply:', repr(line) + debugmsg = 'reply:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, repr(line) resp.append(line[4:].strip()) code = line[:3] # Check that the error code is syntactically correct. @@ -376,7 +392,10 @@ errmsg = "\n".join(resp) if self.debuglevel > 0: - print>>stderr, 'reply: retcode (%s); Msg: %s' % (errcode, errmsg) + debugmsg = 'reply: retcode (%s); Msg: %s' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg % (errcode, errmsg) return errcode, errmsg def docmd(self, cmd, args=""): @@ -490,7 +509,10 @@ self.putcmd("data") (code, repl) = self.getreply() if self.debuglevel > 0: - print>>stderr, "data:", (code, repl) + debugmsg = 'data:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, (code, repl) if code != 354: raise SMTPDataError(code, repl) else: @@ -501,7 +523,10 @@ self.send(q) (code, msg) = self.getreply() if self.debuglevel > 0: - print>>stderr, "data:", (code, msg) + debugmsg = 'data:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, (code, msg) return (code, msg) def verify(self, address): @@ -777,7 +802,10 @@ def _get_socket(self, host, port, timeout): if self.debuglevel > 0: - print>>stderr, 'connect:', (host, port) + debugmsg = 'connect:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, (host, port) new_socket = socket.create_connection((host, port), timeout) new_socket = ssl.wrap_socket(new_socket, self.keyfile, self.certfile) self.file = SSLFakeFile(new_socket) @@ -820,14 +848,20 @@ self.sock.connect(host) except socket.error: if self.debuglevel > 0: - print>>stderr, 'connect fail:', host + debugmsg = 'connect fail:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, host if self.sock: self.sock.close() self.sock = None raise (code, msg) = self.getreply() if self.debuglevel > 0: - print>>stderr, "connect:", msg + debugmsg = 'connect:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print>>stderr, debugmsg, msg return (code, msg) diff -r ae1d34142a2a Misc/ACKS --- a/Misc/ACKS Wed Jan 09 22:04:35 2013 -0800 +++ b/Misc/ACKS Fri Jan 11 08:39:23 2013 +0000 @@ -166,6 +166,7 @@ Mitch Chapman Greg Chapman Brad Chapman +Gavin Chappell David Chaum Nicolas Chauvat Michael Chermside