mailer (Python3)
Dieser Mailer schickt einfach eine Mail vom System aus. Dabei muss darauf geachtet werden, dass der Server Mails versenden kann mit "mail". Es schickt je nach Einstellung eine Text-Mail oder Mail mit Anhang. Der Rückgabewert besagt, ob die Mail erfolgreich versendet wurde - oder nicht.
Eigener Anwendungsfall: Einfacher Text, Bestätigungscode, Link, Nachricht.
HOWTO:
$0 -f "/var/file.png" -e mail@domain.tld -s "Betreff"
$0 -t "Text" -m mail@domain.tld -s "Betreff"
# -e ODER -m = Mailadresse
Beispiel:
import subprocess
empfaenger = "mail@domain.tld"
betreff = "Testbetreff"
nachricht = "Hallo, ich bin ein Test!"
try:
result = subprocess.run(
['python3', 'lib/mailer.py', '-e', empfaenger, '-s', betreff, '-t', nachricht],
check=True
)
print("Mail erfolgreich gesendet")
except subprocess.CalledProcessError:
print("Fehler beim Mailversand")
Script:
#!/usr/bin/env python3
import sys
import subprocess
args = sys.argv[1:]
file = None
text = None
mail = None
subj = None
# Argument-Parsing
i = 0
while i < len(args):
if args[i] == '-f':
file = args[i + 1]
i += 2
elif args[i] == '-t':
text = args[i + 1]
i += 2
elif args[i] in ['-e', '-m']:
mail = args[i + 1]
i += 2
elif args[i] == '-s':
subj = args[i + 1]
i += 2
else:
i += 1
# Fehlerprüfung
if not mail or not subj:
print("ERROR")
sys.exit(1)
# Mailversand
if file and not text:
try:
subprocess.run(['mail', '-s', subj, mail], input=open(file, 'rb').read(), check=True)
except Exception as e:
print("Fehler beim Senden:", e)
sys.exit(1)
elif text and not file:
try:
subprocess.run(['mail', '-s', subj, mail], input=text.encode(), check=True)
except Exception as e:
print("Fehler beim Senden:", e)
sys.exit(1)
else:
print("ERROR")
sys.exit(1)