From 833a0676a33a72aaefd2d852a9ceed4a2dff0ee8 Mon Sep 17 00:00:00 2001 From: kmein Date: Sat, 23 Jul 2016 21:30:32 +0200 Subject: [PATCH] Add code --- gmail-send.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 gmail-send.py diff --git a/gmail-send.py b/gmail-send.py new file mode 100755 index 0000000..e3dd333 --- /dev/null +++ b/gmail-send.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +import sys + +def send_email(user, pwd, recipient, subject, body, content_type): + import smtplib + from email.mime.text import MIMEText + + gmail_user = user + gmail_pwd = pwd + + FROM = user + TO = recipient if type(recipient) is list else [recipient] + SUBJECT = subject + TEXT = body + + # Prepare actual message + message = MIMEText(TEXT, content_type, "utf-8") + message["From"] = FROM + message["To"] = ", ".join(TO) + message["Subject"] = SUBJECT + message_string = message.as_string() + + try: + server = smtplib.SMTP("smtp.gmail.com", 587) + server.ehlo() + server.starttls() + server.login(gmail_user, gmail_pwd) + server.sendmail(FROM, TO, message_string) + server.close() + return message_string + except: + print("Failed to send mail: ", sys.exc_info()) + +if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser( + description="Send an email message via SMTP. Message body is read from stdin." + ) + parser.add_argument("gmail_user", help="sender's gmail username (without domain)") + parser.add_argument("gmail_pwd", help="sender's gmail password") + parser.add_argument("recipient", help="recipient's email address (with domain)") + parser.add_argument("-s", "--subject", help="email subject") + parser.add_argument("-v", "--verbose", help="output sent message", action="store_true") + parser.add_argument("--html", help="send email as HTML", action="store_true") + args = parser.parse_args() + + body = sys.stdin.read() + msg = send_email( + args.gmail_user, + args.gmail_pwd, + args.recipient, + args.subject if args.subject is not None else "", + body, + "html" if args.html else "plain" + ) + if args.verbose: + print("\n%s" % msg) +