Something went wrong on our end
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
BufferingSMTPHandler.py 1.72 KiB
import json
import logging
import logging.handlers
import smtplib
from typing import Tuple, List
class BufferingSMTPHandler(logging.handlers.BufferingHandler):
# BASED ON CODE DEFINED HERE:
# https://gist.github.com/anonymous/1379446 LINKED OUT FROM THIS ISSUE:
# https://stackoverflow.com/questions/1610845/collate-output-in-python-logging-memoryhandler-with-smtphandler
def __init__(self,
server: Tuple[str, str],
credentials: Tuple[str, str],
fromaddr: str, toaddrs: List[str], subject: str, capacity: int):
logging.handlers.BufferingHandler.__init__(self, capacity)
self.mailhost = server[0]
self.mailport = server[1]
self.login = credentials[0]
self.passwd = credentials[1]
self.fromaddr = fromaddr
self.toaddrs = toaddrs
self.subject = subject
self.setFormatter(logging.Formatter("%(asctime)s %(levelname)-5s %(message)s"))
def flush(self):
if len(self.buffer) > 0:
try:
port = self.mailport
server = smtplib.SMTP(self.mailhost, port)
msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (self.fromaddr, ','.join(self.toaddrs), self.subject)
for record in self.buffer:
s = self.format(record)
print(s)
msg = msg + s + "\r\n"
server.ehlo()
server.starttls()
server.login(self.login, self.passwd)
server.sendmail(self.fromaddr, self.toaddrs, msg)
server.quit()
except:
raise Exception("Error thrown in BufferingSMTPHandler")
self.buffer = []