lf_mail.py : using the logg

This commit is contained in:
Chuck SmileyRekiere
2020-11-03 15:03:04 -07:00
parent 69ee9bcd25
commit 9f7eb3012e

View File

@@ -1,6 +1,10 @@
#!/usr/bin/python3
import smtplib
import argparse
import logging
import sys
FORMAT = '%(asctime)s %(name)s %(levelname)s: %(message)s'
EPILOG = '''\
Text message via email:
@@ -26,6 +30,17 @@ def usage():
print("-s | --smtp smtp server --smtp <smtp server> default smtp.gmail.com default=smtp.gmail.com")
print("-p | --port smtp port --port <port> default 465 (SSL) default=465")
# see https://stackoverflow.com/a/13306095/11014343
class FileAdapter(object):
def __init__(self, logger):
self.logger = logger
def write(self, data):
# NOTE: data can be a partial line, multiple lines
data = data.strip() # ignore leading/trailing whitespace
if data: # non-blank
self.logger.info(data)
def flush(self):
pass # leave it to logging to flush properly
def main():
@@ -38,28 +53,46 @@ def main():
parser.add_argument("-b", "--body", type=str, help="email body --body <body text>", required = True)
parser.add_argument("-s,", "--smtp", type=str, help="smtp server --smtp <smtp server> default smtp.gmail.com ", default="smtp.gmail.com")
parser.add_argument("-p,", "--port", type=str, help="smtp port --port <port> default 465 (SSL)", default="465")
parser.add_argument("-l", "--loge", type=str, help="logfile for messages, stdout means output to console",default="stdout")
args = None
try:
args = parser.parse_args()
logfile = args.log
except Exception as e:
print(e)
usage()
exit(2)
console_handler = logging.StreamHandler()
formatter = logging.Formatter(FORMAT)
logg = logging.getLogger(__name__)
logg.setLevel(logging.DEBUG)
file_handler = None
if (logfile is not None):
if (logfile != "stdout"):
file_handler = logging.FileHandler(logfile, "w")
email_text = 'Subject: {}\n\n{}'.format(args.subject, args.body )
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logg.addHandler(file_handler)
logg.addHandler(logging.StreamHandler(sys.stdout)) # allows to logging to file and stderr
else:
# stdout logging
logging.basicConfig(format=FORMAT, handlers=[console_handler])
try:
email_text = 'Subject: {}\n\n{}'.format(args.subject, args.body )
server = smtplib.SMTP_SSL(args.smtp, int(args.port))
server.ehlo()
server.login(args.user,args.passwd)
server.sendmail(args.user, args.to, email_text)
server.close()
print('email Sent! smtp server: {} port: {}'.format(args.smtp, args.port))
logg.info('email Sent! smtp server: {} port: {}'.format(args.smtp, args.port))
except:
print('email failed')
print("Is access for less secure apps setting has been turned on for the email account?")
logg.info('email failed')
logg.info("Is access for less secure apps setting has been turned on for the email account?")
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
if __name__ == '__main__':