#!/usr/bin/env python3 import smtplib import argparse from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def read_credentials(file_path): """Liest SMTP-Serverdetails und Credentials aus einer Textdatei. Format der Datei (jeweils eine Zeile): smtp_server:port username password from_address to_address """ with open(file_path, 'r') as f: lines = [line.strip() for line in f.readlines() if line.strip()] if len(lines) != 5: raise ValueError("Die Credential-Datei muss genau 5 Zeilen enthalten.") smtp_server, smtp_port = lines[0].split(':') username = lines[1] password = lines[2] from_addr = lines[3] to_addr = lines[4] return smtp_server, smtp_port, username, password, from_addr, to_addr def send_email(smtp_server, smtp_port, username, password, from_addr, to_addr, subject, body): """Versendet eine E-Mail mit den angegebenen Parametern.""" msg = MIMEMultipart() msg['From'] = from_addr msg['To'] = to_addr msg['Subject'] = subject msg.attach(MIMEText(body, 'plain')) try: with smtplib.SMTP(smtp_server, int(smtp_port)) as server: server.starttls() server.login(username, password) server.send_message(msg) print("E-Mail erfolgreich versendet.") except Exception as e: print(f"Fehler beim Versand der E-Mail: {e}") def main(): parser = argparse.ArgumentParser(description='Versendet eine E-Mail mit festem Textinhalt und dynamischem Betreff.') parser.add_argument('--subject', type=str, required=True, help='Betreff der E-Mail') parser.add_argument('--credentials', type=str, required=True, help='Pfad zur Credential-Datei') args = parser.parse_args() smtp_server, smtp_port, username, password, from_addr, to_addr = read_credentials(args.credentials) body = """Hallo, dies ist eine automatisch generierte E-Mail. Mit freundlichen Grüßen, Dein Skript""" send_email(smtp_server, smtp_port, username, password, from_addr, to_addr, args.subject, body) if __name__ == "__main__": main()