import argparse import smtplib from email.message import EmailMessage SMTP_HOST = "mail.piga.pl" SMTP_PORT = 587 def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser( description="Wysylka maila przez SMTP mail.piga.pl:587 z STARTTLS." ) parser.add_argument("--user", required=True, help="Login SMTP, np. user@piga.pl") parser.add_argument("--password", required=True, help="Haslo do konta SMTP") parser.add_argument("--to", required=True, dest="recipient", help="Adres odbiorcy") parser.add_argument("--subject", default="Test SMTP", help="Temat wiadomosci") parser.add_argument( "--body", required=True, help='Tresc wiadomosci, np. --body "To jest test".', ) return parser.parse_args() def build_message(args: argparse.Namespace) -> EmailMessage: message = EmailMessage() message["From"] = args.user message["To"] = args.recipient message["Subject"] = args.subject message.set_content(args.body) return message def send_mail(args: argparse.Namespace) -> None: message = build_message(args) with smtplib.SMTP(SMTP_HOST, SMTP_PORT, timeout=30) as server: server.ehlo() server.starttls() server.ehlo() server.login(args.user, args.password) server.send_message(message) if __name__ == "__main__": arguments = parse_args() send_mail(arguments) print("Mail wyslany poprawnie.")