Formulare mit MAIL-ECHO


Eine einfache Anwendung erlaubt, HTML-Formulare zu erstellen und die Eingabe per Email an den Empfänger zu senden. Im Standard ist dies schon alleine dadurch möglich, dass durch die action-Angabe in der Form mailto:email-adresse eine Email mit den Eingabedaten erzeugt wird.
Das an der RUB zentral bereitgestellte Skript mit

bietet allerdings noch eine Reihe weiterer Leistungen:
Ein Beispielformular:
Antrag auf Erhöhung des Taschengeldes

Antragsteller:
Wiederholungsantrag: nein, ja
Zur vereinfachten und beschleunigten Abwicklung bei gleichen Gründen wie beim letzten Antrag.
Mit positiver Anwort wird gerechnet: nein, ja
Betrag: DM
Zahlungsweise
täglich,
wöchentlich,
monatlich,
jährlich
Gründe:
Besondere ausführliche Begründung:
Auszahlungsmodus:
bar, unbar, aufs Konto Schuldentilgung
Gegenleistungen sind versprochen, beeidet, durch Pfand gesichert
Gewünschte Antwort:
mündlich und sofort
sofort und in bar
baldmöglichst
als E-Mail, Adresse:
Aktueller Schuldenstand (zur Bewertung erforderlich): DM


Die Eingabedaten zu diesem Formular:
<form action="http://www.ruhr-uni-bochum.de/php-bin/form-mail" method="POST" >
   <input type="HIDDEN" name="RECEIVER" value="Norbert.Schwarz@rz.ruhr-uni-bochum.de" >
   <input type="HIDDEN" name="SUBJECT" value="Antrag auf Taschengelderhoehung" >
   <input type="hidden" name="ANSWER_URL"
                        value="http://www.ruhr-uni-bochum.de/schwarz/form-mail-answer.html">
   <div align="center"><font size="+2">Antrag auf Erhöhung des Taschengeldes</font></div>
   <hr>
   <dl>
      <dt><b>Antragsteller: </b>
          <input name="Antragsteller" value="Christine"  >
          </dt>
      <dt><b>Wiederholungsantrag: </b>
          <input type="RADIO" name="wiederholung" value="Nein" checked="CHECKED" >nein,
          <input type="RADIO" name="wiederholung" value="Ja"> ja
          </dt>
          <dd>Zur vereinfachten und beschleunigten Abwicklung bei gleichen Gründen
                  wie beim letzten Antrag.</dd>
      <dt><b>Mit positiver Anwort wird gerechnet:</b>
          <input type="RADIO" name="antwort" value="Nein" > nein,
          <input type="RADIO" name="antwort" value="Ja" checked="CHECKED"> ja
          </dt>
          <dd></dd>
      <dt><b>Betrag: </b>
          <input name="betrag" value="10" size="5" align="BOTTOM" > DM</dt>
          <dd></dd>
      <dt><b>Zahlungsweise</b></dt>
          <dd><input type="RADIO" name="zahlweise" value="taeglich" align="BOTTOM"> täglich,
              <br>
              <input type="RADIO" name="zahlweise" value="woche" align="BOTTOM"> wöchentlich,
              <br>
              <input type="RADIO" name="zahlweise"
                     value="monat" checked="CHECKED" align="BOTTOM" >monatlich,
              <br>
              <input type="RADIO" name="zahlweise" value="jahr" align="BOTTOM" >jährlich
              </dd>
      <dt><b>Gründe:</b></dt>
          <dd><select name="gruende" size="5" multiple="MULTIPLE">
                   <option value="Abwaschen" >freiwilliges Abwaschen</option>
                   <option value="Wagenwaschen">häufigeres Wagenwaschen</option>
                   <option value="Defizitausgleich">Abbau der Nettoneuverschuldung</option>
                   <option selected="SELECTED" value="Geldmangel">völlige Fehlbewertung des Bedarfs</option>
                   <option selected="SELECTED" value="Vergleichbedarf">Alle anderen haben mehr!</option>
                   <option value="Schulergebnisse">verbesserte Schulergebnisse</option>
                   <option value="Geschwisterbewachen">Geschwister beaufsichtigen</option>
                   <option value="Diskobesuche">Verteuerung wg. Disko</option>
                   <option value="Kleidung">Inhalt des Kleiderschrank ist untragbar!</option>
                   <option value="Abwertung">Wertverfall der DM</option></select></dd>
      <dt><b>Besondere ausführliche Begründung</b>:</dt>
          <dd><textarea name="mehrgruende" rows="10" cols="42"></textarea></dd>
      <dt><b>Auszahlungsmodus:</b> </dt>
          <dd><input type="RADIO" name="zahlung" value="bar" checked="CHECKED">bar,
              <input type="RADIO" name="zahlung" value="anweisung">unbar, aufs Konto
              <input type="RADIO" name="zahlung" value="Tilgung"> Schuldentilgung
         </dd>
     <dt><b>Gegenleistungen</b> sind
              <input type="RADIO" name="gegenleistung" value="versprochen" > versprochen,
              <input type="RADIO" name="gegenleistung" value="beschworen"> beeidet,
              <input type="RADIO" name="gegenleistung" value="Pfand hinterlegt"> durch Pfand gesichert
        </dt>
     <dt><b>Gewünschte Antwort: </b></dt>
        <dd><input type="RADIO" name="antwortabgabe" value="sofort">  mündlich und sofort
            <br>
            <input type="RADIO" name="antwortabgabe" value="sofortbar" checked="CHECKED" > sofort und in bar
            <br><input type="RADIO" name="antwortabgabe" value="bald" > baldmöglichst
            <br><input type="RADIO" name="antwortabgabe" value="email" > als E-Mail,
                         Adresse: <input name="Email" size="40">
       </dd>
     <dt><b>Aktueller Schuldenstand (zur Bewertung erforderlich): </b>
            <input name="schulden" value="0" size="5" align="BOTTOM" > DM
        </dt>
        <dd></dd>
     </dl>
     <hr noshade size="2" align="RIGHT">
     <center><input type="SUBMIT" name="AntragStellen" value="Antrag stellen" size="40" >
             <input type="RESET" name="reset" value="Eingaben löschen" size="40">
     </center>
</form>

Einige der Felder haben eine besondere Bedeutung, insbesondere die HIDDEN-Felder:
ACTION
gibt das auszuführende Skript an: "http://www.ruhr-uni-bochum.de/php-bin/form-mail"
RECEIVER
gibt die Email-Adresse des Empfängers an

SUBJECT
gibt die Subject- bzw. Betreff-Angabe der Email vor
REPLY_TO - (Diese Angabe darf fehlen!)
gibt das Antwort-(Reply)-Feld der Email vor.

ANSWER_URL - (Diese Angabe darf fehlen!)
gibt die WWW-Adresse für die Anwort vor.
Dabei werden die gleichen Ersetzungen wie im folgenden EMAIL_LAYOUT durchgeführt.
EMAIL_LAYOUT - (Diese Angabe darf fehlen!)
gibt die WWW-Adresse einer Datei vor, in der das Layout für die Email beschrieben wird.
Fehlt die Angabe so wird die Email in einem Standardformat erzeugt.
Die Ausgabe zu dem obigen Beispiel sieht dann wie folgt aus:
From anonymous@www.ruhr-uni-bochum.de Fri Apr 28 18:41 MET 1995
Date: Fri, 28 Apr 1995 18:44:19 +0200
From: anonymous@www.ruhr-uni-bochum.de
Subject:  Antrag auf Taschengelderhoehung

AntragStellen=Antrag stellen
Antragsteller=Christine
Email=
antwort=Ja
antwortabgabe=sofortbar
betrag=10
gruende=Vergleichbedarf
mehrgruende=erste zeile

   dritte zeile
schulden=0
wiederholung=Nein
zahlung=bar
zahlweise=monat
ZZ_REMOTE_ADDR=198.137.240.92
ZZ_REMOTE_HOST=www.whitehouse.gov
ZZ_REQUEST_URL=/php-bin/form-mail
Die Email hat die Form Feldname=Wert. Ist die Eingabe mehrzeilig, so wird diese über mehrere Zeilen verteilt, wobei am Zeilenanfang Leerzeichen stehen. Am Ende stehen einige Sonderangaben:
Nach ZZ_REMOTE_ADDR steht die IP-Adresse des Rechners, von dem das Formular aufgerufen wurden; hinter ZZ_REMOTE_HOST sein Name, falls vorhanden; hinter ZZ_REQUEST_URL steht die Adresse der WWW-Seite, die das Formular enthält.


Ausgabe mit einem Email-Layout:
Wird eine beliebige Datei vorgegeben, so wird bei der Bildung der Email eine Reihe von Textersetzungen durchgeführt: Es werden alle Platzhalter für die Formulareingaben ersetzt. Diese haben die Form {$formularfeld}, inklusive der geschweiften Klammern und dem $-Zeichen.
In dem obigen Beispiel sind das die unter anderem die Felder: {$Antragsteller} {$wiederholung} {$betrag}
Bitte beachten: Die Groß-Kleinschreibung ist relevant.

Neben den oben beschriebenen "ZZ_"-Feldern können auch noch {$ZZ_DATE} und {$ZZ_TIME} für Datum und Uhrzeit verwendet werden.

Tips und Tricks:

Wenn man sich das Layout seiner Antwort-Email geschickt aufbaut, zum Beispiel
meinjob.bat {$Antragsteller} {$betrag}
so hat man hinterher in der Email einen Text, den man durch Markien, Kopieren und Einfügen (zum Beispiel in eine MSDOS-Eingabeaufforderung) direkt in seine Anwendung einbetten kann. Auf die Weise kann man ein SQL-Statement für eine Datenbankanwendung oder eine durch Kommata getrennte Liste vorbereiten, so dass eine spätere Nachbearbeitung sehr leicht ist.
MAILMODE - (Diese Angabe darf fehlen!)
Mit dem Feld MAILMODE kann gesteuert werden, ob überhaupt eine Email verschickt werden soll.

Durch MAILMODE=DEBUG wird Mailausgabe unterdrückt und statt dessen die vorbereitete Email nur noch ausgegeben. Dabei wird dann die Ausgabe zu ANSWER_URL unterdrückt.

Mittels MAILMODE=NOMAIL wird einfach gar keine Email erzeugt.
Dies sieht zunächst komisch aus, hat aber den Zweck, dass in der WWW-Seite der ANSWER_URL-Angabe vor dem Abschicken eine Kontrollausgabe erfolgen kann und erst durch eine nochmalige Verwendung dieses Skriptes die Email tatsächlich verschickt wird.

24.11.2000 - Norbert Schwarz, Rechenzentrum, Ruhr-Universität Bochum [ MAIL ] [ WWW-Seite ]