Serial Mails mit Postfix

Hinweis: In dem Thema Serial Mails mit Postfix gibt es 1 Antwort.
  • Wegen die nette Unterhaltung bei


    Postfix-Mail und TLS


    Postfix (oder "sendmail") kann man benützen für Serial-Mail. Hier mein Shellscript als "Freeware"!


    Zwei Email in einer Textdatei mit Name "demo"



    Mein Shellscript "mats_mail"



    Benützung

    Code
    mats_mail < demo

    Für den Inhalt des Beitrages 90383 haftet ausdrücklich der jeweilige Autor: stamcose

  • Bitte rücke künftig deine Scripte korrekt ein, so dass man sie auch lesen kann.


    Von der Verwendung dieses Scripts rate ich dringend ab.
    Es ist irreführend und fehlerhaft.
    Und selbst bei korrekten Eingabedaten nicht zuverlässig.


    Es liest Zeilen aus einer Eingabedatei, die mehrere Mails enthalten soll.
    Am Anfang soll eine Emailadresse stehen.
    Dann soll eine Textzeile kommen, die das Subject der zu sendenden Mail werden soll.
    Dann soll der Body der Mail kommen.
    Und die Mail soll mit einem @-Zeichen in einer sonst leeren Zeile abschliessen.


    In der äußeren While-Schleife der erste Test (Zeile 5):

    Code
    read address
    if [ $? -ne 0 ] ; then
        echo The file not terminated with "@"
        break
    fi

    Dieser erste Test soll eigentlich den die Mails trennende @-Zeile überlesen.
    Das tut er nicht, denn die Bedingung $? -ne 0 testet, ob der read Befehl mit Statuscode 0 == Erfolg endete.
    Das tut der fast immer. Und er schlägt nur fehl, wenn nicht gelesen werden kann, ODER ein anderer Fehler auftaucht.


    Danach kommt dieser Test (Zeile 11):

    Code
    if [ "$address" == @ ]; then 
        echo Normal end
        break
    fi

    Dieser Test testet jetzt tatsächlich auf die Mailende Kennzeichnung: auf eine Zeile, die nur @ enthält.
    Das funktioniert nach der ersten Mail und das Script ist zu Ende. Keine weitere Mail kann mehr gesendet werden.
    Nicht das, was der Urheber wollte oder anpries.


    Nota bene: Die Adresse selbst wird kritik- und testlos gelesen und hingenommen.
    Das Script würde auch versuchen an ungültige Mailadressen, wie Ach-du-Deppenhaufen! der du irgendwo irgendwie irgendwas, senden wollen.


    Man braucht auch keine Pipes von drei seds um drei sed-Befehle auszuführen. Ein Aufruf reicht.
    Man könnte noch mehr bekritteln, aber dieser Ansatz ist vergeigt.


    Bitte löschen.


    Und wenn man das schon so machen will, dann lässt man einfach die While-Schleife lesen:

    Code
    while read line; do # es wird eine Zeile gelesen
                        # und man kann es dann auch lesen
        testeAddress
        testeSubject
        ...
    done < EingabeDatei

    Für den Inhalt des Beitrages 90431 haftet ausdrücklich der jeweilige Autor: LinuPia