Files
wlan-lanforge-scripts/lf_mail.py
Chuck SmileyRekiere ca00a44c07 lf_cisco_power.py: email/text on completion of test
lf_mail.py : slight formatting change
2020-11-03 15:21:03 -07:00

101 lines
4.3 KiB
Python
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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:
T-Mobile number@tmomail.net
Virgin Mobile number@vmobl.com
AT&T number@txt.att.net
Sprint number@messaging.sprintpcs.com
Verizon number@vtext.com
Tracfone number@mmst5.tracfone.com
Ting number@message.ting.com
Boost Mobile number@myboostmobile.com
U.S. Cellular number@email.uscc.net
Metro PCS number@mymetropcs.com
'''
def usage():
print("-u | --user: email account address --user <sender>@gmail.com required = True")
print("-pw | --passwd email password --passwd <password for email account> required = True")
print("-t | --to email send to --to <reciever>@gmail.com required = True")
print("-su | --subject email subject --subject <title> default Lanforge Report default = Lanforge Report")
print("-b | --body email body --body <body text> required = True")
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():
parser = argparse.ArgumentParser(description="lanforge email",epilog=EPILOG,
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument("-u", "--user", type=str, help="email account --user <sender>@gmail.com", required = True)
parser.add_argument("-pw", "--passwd", type=str, help="email password --passwd <password for email account>", required = True)
parser.add_argument("-t", "--to", type=str, help="email send to --to <reciever>@gmail.com", required = True)
parser.add_argument("-su", "--subject", type=str, help="email subject --subject <title> default Lanforge Report", default="Lanforge Report")
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", "--log", 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")
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()
logg.info('email Sent! smtp server: {} port: {}'.format(args.smtp, args.port))
except:
logg.info('email failed')
logg.info("Is access for less secure apps setting has been turned on for the email account?")
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
if __name__ == '__main__':
main()
print("Lanforge send email via smtp server")