-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuffering_smtp_handler.py
More file actions
37 lines (34 loc) · 1.5 KB
/
buffering_smtp_handler.py
File metadata and controls
37 lines (34 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import logging, logging.handlers
class BufferingSMTPHandler(logging.handlers.BufferingHandler):
def __init__(self, mailhost, fromaddr, toaddrs, subject, capacity,
logging_format):
logging.handlers.BufferingHandler.__init__(self, capacity)
self.mailhost = mailhost
self.mailport = None
self.fromaddr = fromaddr
self.toaddrs = toaddrs
self.subject = subject
self.formatter = logging_format
self.setFormatter(logging.Formatter(logging_format))
def flush(self):
if len(self.buffer) > 0:
try:
import smtplib
port = self.mailport
if not port:
port = smtplib.SMTP_PORT
smtp = smtplib.SMTP(self.mailhost, port)
if isinstance(self.toaddrs, list): # If to addrs is a list, then join them as a string
toaddrs = ','.join(self.toaddrs)
else:
toaddrs = self.toaddrs
msg = "From: {}\r\nTo: {}\r\nSubject: {}\r\n\r\n".format(self.fromaddr, toaddrs,
self.subject)
for record in self.buffer:
s = self.format(record)
msg = msg + s + "\r\n"
smtp.sendmail(self.fromaddr, self.toaddrs, msg)
smtp.quit()
except:
self.handleError(None) # no particular record
self.buffer = []