#! /usr/bin/env python3 import smtplib import getpass from email.message import EmailMessage import argparse import sys def main() -> int: # Handle program arguments ap = argparse.ArgumentParser( prog="ewp-sendmail", description="Easily send real emails" ) ap.add_argument( "--recipient", "--to", help="Email address of the recipient", default="evan@ewpratten.com", ) ap.add_argument("--cc", help="Email addresses to CC", nargs="+") ap.add_argument("--subject", "-s", help="Subject of the email") ap.add_argument( "--from", help="Sender of the email", default="system-reports@ewpratten.com", dest="sender", ) ap.add_argument( "--password", help="Password to use for sending the email.", ) args = ap.parse_args() # Read the body from stdin print("Enter the body of the email. Press Ctrl+D when done.") body = sys.stdin.read() # Read the password password = args.password or getpass.getpass(f"Password for {args.sender}: ") # Log in to the SMTP server print("Connecting to SMTP server...") smtp = smtplib.SMTP("smtp.ewpratten.com", 587) smtp.ehlo() smtp.starttls() print("Authenticating...") smtp.login(args.sender, password) print("Sending email...") # Create the email msg = EmailMessage() msg.set_content(body) msg["Subject"] = args.subject msg["From"] = args.sender msg["To"] = args.recipient if args.cc: msg["Cc"] = ",".join(args.cc) # Send the email smtp.send_message(msg) print("Done.") smtp.quit() return 0 if __name__ == "__main__": sys.exit(main())