Skip to content

Instantly share code, notes, and snippets.

@wayhoww
Last active July 19, 2024 00:24
Show Gist options
  • Save wayhoww/8ebbcf31d95ae66c9828e3fba6866dfd to your computer and use it in GitHub Desktop.
Save wayhoww/8ebbcf31d95ae66c9828e3fba6866dfd to your computer and use it in GitHub Desktop.
Send email via SMTP. It works with Gmail.
#!/usr/bin/env python3
import smtplib
import argparse
import os
import sys
def send_email(
host: str,
username: str,
password: str,
receiver: str,
subject: str,
text: str
):
message = ""
message += f"From: {username.split('@')[0]} <{username}>\n"
message += f"To: {receiver.split('@')[0]} <{receiver}>\n"
message += f"Subject: {subject}\n\n"
message += text
server = smtplib.SMTP(host)
server.connect(host, 587)
server.starttls()
server.login(username, password)
server.sendmail(username, receiver, message)
server.quit()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--host", required=False, help="SMTP server host")
parser.add_argument("--username", required=False, help="SMTP username")
parser.add_argument("--password", required=False, help="SMTP password")
parser.add_argument("--receiver", "--to", "-r", required=True, help="Email receiver")
parser.add_argument("--subject", "-s", required=True, help="Email subject")
parser.add_argument("--text", "-t", required=True, help="Email text")
args = parser.parse_args()
# try to find HOST, USERNAME, PASSWORD from environment variables
host = args.host or os.environ.get("ES_HOST")
username = args.username or os.environ.get("ES_USERNAME")
password = args.password or os.environ.get("ES_PASSWORD")
if not host or not username or not password:
print("Please provide host, username, password", file=sys.stderr)
exit(1)
send_email(
host=host,
username=username,
password=password,
receiver=args.receiver,
subject=args.subject,
text=args.text
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment