50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
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.")
|