Added new optional credentials argument to SMTPHandler.__init__, and smtp.login() is now called in SMTPHandler.emit() if credentials are specified.

This commit is contained in:
Vinay Sajip 2007-05-01 10:20:03 +00:00
parent 09728b7ef3
commit 70c8e8b861
1 changed files with 12 additions and 7 deletions

View File

@ -722,22 +722,25 @@ class SMTPHandler(logging.Handler):
""" """
A handler class which sends an SMTP email for each logging event. A handler class which sends an SMTP email for each logging event.
""" """
def __init__(self, mailhost, fromaddr, toaddrs, subject): def __init__(self, mailhost, fromaddr, toaddrs, subject, credentials=None):
""" """
Initialize the handler. Initialize the handler.
Initialize the instance with the from and to addresses and subject Initialize the instance with the from and to addresses and subject
line of the email. To specify a non-standard SMTP port, use the line of the email. To specify a non-standard SMTP port, use the
(host, port) tuple format for the mailhost argument. (host, port) tuple format for the mailhost argument. To specify
authentication credentials, supply a (username, password) tuple
for the credentials argument.
""" """
logging.Handler.__init__(self) logging.Handler.__init__(self)
if type(mailhost) == types.TupleType: if type(mailhost) == types.TupleType:
host, port = mailhost self.mailhost, self.mailport = mailhost
self.mailhost = host
self.mailport = port
else: else:
self.mailhost = mailhost self.mailhost, self.mailport = mailhost, None
self.mailport = None if type(credentials) == types.TupleType:
self.username, self.password = credentials
else:
self.username = None
self.fromaddr = fromaddr self.fromaddr = fromaddr
if type(toaddrs) == types.StringType: if type(toaddrs) == types.StringType:
toaddrs = [toaddrs] toaddrs = [toaddrs]
@ -793,6 +796,8 @@ class SMTPHandler(logging.Handler):
string.join(self.toaddrs, ","), string.join(self.toaddrs, ","),
self.getSubject(record), self.getSubject(record),
formatdate(), msg) formatdate(), msg)
if self.username:
smtp.login(self.username, self.password)
smtp.sendmail(self.fromaddr, self.toaddrs, msg) smtp.sendmail(self.fromaddr, self.toaddrs, msg)
smtp.quit() smtp.quit()
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit):