diff -r 6478c4259ce3 Doc/library/smtplib.rst --- a/Doc/library/smtplib.rst Thu Jan 10 07:46:29 2013 +0200 +++ b/Doc/library/smtplib.rst Thu Jan 10 12:40:13 2013 +0000 @@ -178,8 +178,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='localhost', port=0) diff -r 6478c4259ce3 Lib/smtplib.py --- a/Lib/smtplib.py Thu Jan 10 07:46:29 2013 +0200 +++ b/Lib/smtplib.py Thu Jan 10 12:40:13 2013 +0000 @@ -50,6 +50,7 @@ import base64 import hmac import copy +import datetime from email.base64mime import body_encode as encode_base64 from sys import stderr @@ -282,8 +283,11 @@ # 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('connect: to', (host, port), self.source_address, - file=stderr) + debugmsg = 'connect: to' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, (host, port), self.source_address, + file=stderr) return socket.create_connection((host, port), timeout, self.source_address) @@ -313,18 +317,27 @@ if not port: port = self.default_port if self.debuglevel > 0: - print('connect:', (host, port), file=stderr) + debugmsg = 'connect:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, (host, port), file=stderr) self.sock = self._get_socket(host, port, self.timeout) self.file = None (code, msg) = self.getreply() if self.debuglevel > 0: - print("connect:", msg, file=stderr) + debugmsg = 'connect:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, msg, file=stderr) return (code, msg) def send(self, s): """Send `s' to the server.""" if self.debuglevel > 0: - print('send:', repr(s), file=stderr) + debugmsg = 'send:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, repr(s), file=stderr) if hasattr(self, 'sock') and self.sock: if isinstance(s, str): s = s.encode("ascii") @@ -371,7 +384,10 @@ self.close() raise SMTPServerDisconnected("Connection unexpectedly closed") if self.debuglevel > 0: - print('reply:', repr(line), file=stderr) + debugmsg = 'reply:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, repr(line), file=stderr) resp.append(line[4:].strip(b' \t\r\n')) code = line[:3] # Check that the error code is syntactically correct. @@ -387,8 +403,10 @@ errmsg = b"\n".join(resp) if self.debuglevel > 0: - print('reply: retcode (%s); Msg: %s' % (errcode, errmsg), - file=stderr) + debugmsg = 'reply: retcode (%s); Msg: %s' % (errcode, errmsg) + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, file=stderr) return errcode, errmsg def docmd(self, cmd, args=""): @@ -505,7 +523,10 @@ self.putcmd("data") (code, repl) = self.getreply() if self.debuglevel > 0: - print("data:", (code, repl), file=stderr) + debugmsg = 'data:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, (code, repl), file=stderr) if code != 354: raise SMTPDataError(code, repl) else: @@ -518,7 +539,10 @@ self.send(q) (code, msg) = self.getreply() if self.debuglevel > 0: - print("data:", (code, msg), file=stderr) + debugmsg = 'data:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, (code, msg), file=stderr) return (code, msg) def verify(self, address): @@ -873,7 +897,10 @@ def _get_socket(self, host, port, timeout): if self.debuglevel > 0: - print('connect:', (host, port), file=stderr) + debugmsg = 'connect:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, (host, port), file=stderr) new_socket = socket.create_connection((host, port), timeout, self.source_address) if self.context is not None: @@ -922,14 +949,20 @@ self.sock.connect(host) except OSError: if self.debuglevel > 0: - print('connect fail:', host, file=stderr) + debugmsg = 'connect fail:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, host, file=stderr) if self.sock: self.sock.close() self.sock = None raise (code, msg) = self.getreply() if self.debuglevel > 0: - print('connect:', msg, file=stderr) + debugmsg = 'connect:' + if self.debuglevel > 1: + debugmsg = '[' + str(datetime.datetime.now().time()) + '] ' + debugmsg + print(debugmsg, msg, file=stderr) return (code, msg) diff -r 6478c4259ce3 Misc/ACKS --- a/Misc/ACKS Thu Jan 10 07:46:29 2013 +0200 +++ b/Misc/ACKS Thu Jan 10 12:40:13 2013 +0000 @@ -201,6 +201,7 @@ Brad Chapman Greg Chapman Mitch Chapman +Gavin Chappell David Chaum Nicolas Chauvat Jerry Chen