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 #!/usr/bin/python3
import smtplib import smtplib
import argparse import argparse
import logging
import sys
FORMAT = '%(asctime)s %(name)s %(levelname)s: %(message)s'
EPILOG = '''\ EPILOG = '''\
Text message via email: 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("-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") 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(): 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("-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("-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("-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 args = None
try: try:
args = parser.parse_args() args = parser.parse_args()
logfile = args.log
except Exception as e: except Exception as e:
print(e) print(e)
usage() usage()
exit(2) exit(2)
email_text = 'Subject: {}\n\n{}'.format(args.subject, args.body ) 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")
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: try:
email_text = 'Subject: {}\n\n{}'.format(args.subject, args.body )
server = smtplib.SMTP_SSL(args.smtp, int(args.port)) server = smtplib.SMTP_SSL(args.smtp, int(args.port))
server.ehlo() server.ehlo()
server.login(args.user,args.passwd) server.login(args.user,args.passwd)
server.sendmail(args.user, args.to, email_text) server.sendmail(args.user, args.to, email_text)
server.close() 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: except:
print('email failed') logg.info('email failed')
print("Is access for less secure apps setting has been turned on for the email account?") logg.info("Is access for less secure apps setting has been turned on for the email account?")
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
if __name__ == '__main__': if __name__ == '__main__':