Skip to main content

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 Direktaufrufsubprocess

(Tests)empfaenger mailer.sh -e= "mail@domain.tld"
-sbetreff = "Testbetreff"
-tnachricht = "Hallo, ich bin ein Test!"

#try:
    imresult Script= empfaenger="mail@domain.tld"subprocess.run(
        betreff="Testbetreff"['python3', nachricht="Hallo, ich bin ein Test!"

if bash 'lib/mailer.shpy', '-ee', "$empfaenger"empfaenger, '-ss', "$betreff"betreff, '-tt', "$nachricht";nachricht],
        thencheck=True
    echo)
    print("Mail erfolgreich gesendet")
elseexcept echosubprocess.CalledProcessError:
    print("Fehler beim Mailversand"
fi)

Script:

#!/usr/bin/bashenv 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] == '-gtf':
        0file ]];= doargs[i case+ "$1"1]
        i += 2
    elif args[i] == '-t':
        text = args[i + 1]
        i += 2
    elif args[i] in ['-f)e', file="$2";'-m']:
        shiftmail = args[i + 1]
        i += 2
    ;;elif args[i] == '-t)s':
        text="$2";subj shift= args[i + 1]
        i += 2
    ;;else:
        -e|-m)i mail="$2";+= shift1

2# ;;
        -s) subj="$2"; shift 2 ;;
    esac
doneFehlerprüfung
if [not -zmail "$mail"or ]not ||subj:
    [ -z "$subj" ]; then
    echo print("ERROR")
    exitsys.exit(1)

1# fiMailversand
if file and not text:
    try:
        subprocess.run(['mail', '-ns', subj, mail], input=open(file, 'rb').read(), check=True)
    except Exception as e:
        print("$file"Fehler ]beim &&Senden:", [e)
        -z "$text" ]; then
    cat "$file" | mail -s "$subj" "$mail"sys.exit(1)

elif text and not file:
    try:
        subprocess.run(['mail', '-ns', subj, mail], input=text.encode(), check=True)
    except Exception as e:
        print("$text"Fehler ]beim &&Senden:", [e)
        -zsys.exit(1)

"$file"else:
    ]; then
    echo "$text" | mail -s "$subj" "$mail"

else
    echo print("ERROR")
    exit 1
fi

exit 0sys.exit(1)