# Copyright 2001-2002 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, # provided that the above copyright notice appear in all copies and that # both that copyright notice and this permission notice appear in # supporting documentation, and that the name of Vinay Sajip # not be used in advertising or publicity pertaining to distribution # of the software without specific, written prior permission. # VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL # VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER # IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # This file is part of the Python logging distribution. See # http://www.red-dove.com/python_logging.html # """Test harness for the logging module. Tests BufferingSMTPHandler, an alternative implementation of SMTPHandler. Copyright (C) 2001-2002 Vinay Sajip. All Rights Reserved. """ from email.mime.text import MIMEText import logging.handlers import smtplib class BufferingSMTPHandler(logging.handlers.BufferingHandler): def __init__(self, mailhost, fromaddr, toaddrs, subject, capacity): logging.handlers.BufferingHandler.__init__(self, capacity) self.mailhost = mailhost self.mailport = None self.fromaddr = fromaddr self.toaddrs = toaddrs self.subject = subject def flush(self): try: if len(self.buffer) > 0: port = self.mailport if self.mailport else smtplib.SMTP_PORT msg = "\n".join([self.format(record) for record in self.buffer]) msg = MIMEText(msg.encode('utf-8'), _charset='utf-8') msg['Subject'] = self.subject msg['From'] = self.fromaddr msg['To'] = ",".join(self.toaddrs) smtp = smtplib.SMTP(self.mailhost, port) smtp.sendmail(self.fromaddr, self.toaddrs, msg.as_string()) smtp.quit() self.buffer = [] except Exception as e: print(e) raise