Anleitung für das cgi-email Skript




Diese Anleitung wird Ihnen helfen, ein WWW-Formular zu entwerfen, über das die Benutzer eine E-Mail an Sie schicken können. Die folgenden Schritte sind dazu nötig:
  1. Eine E-Mail-Vorlage erzeugen.
  2. Einen Link auf Ihrer Webseite zu der Vorlage erzeugen.
  3. Entscheiden, ob ein mailto:-Link ausreicht.
  4. Das HTML-Formular entwerfen.
  5. Kompliziertere HTML-Formulare.
  6. Kontrollieren, ob ACTION richtig gesetzt ist.
  7. Das Formular mit cgiecho testen.
  8. Das Formular öffentlich machen.
  9. Fehler beheben, wenn Sie keine Mail bekommen.
Die folgenden Schritte sind optional.

1. Eine E-Mail-Vorlage erzeugen.

Bevor Sie die ersten E-Mails über Ihr Formular empfangen, sollten Sie sich überlegen, wie diese E-Mails aussehen sollen. Erzeugen Sie eine Textdatei als Vorlage (ein sogenanntes e-mail template), das ungefähr so aussieht:

To: strangeman@chasm.big                         HEADER LINES
Subject: questions three
                                                 Leerzeile
Wie ist Ihr Name?                 [yourname]
Was ist Ihr Anliegen?             [quest]            BODY
Welche ist Ihre Lieblingsfarabe?  [colour]
Im Prinzip ist diese Vorlage formlos. Wer Ihnen eine E-Mail schicken will, kann dieses Formular herunterladen, es ausfüllen und Ihnen zuschicken. Aber es wird auch für das cgiemail-Programm verwendet, deshalb sollten Sie vor dem Einspielen folgende Hinweise beachten:
  1. An den Stellen, wo der Benutzer später seine Eingabe machen soll, müssen Sie ein einzelnes Wort in eckigen Klammern einbauen. Das Wort darf keine Leerzeichen enthalten: Your name: [yourname]. nicht so: [Put your name here].
  2. Kontrollieren Sie, ob die Adresse im To: Feld die richtige ist!
  3. Löschen Sie alle Leerzeilen im Bereich der "HEADER LINES"!
  4. Löschen Sie alle Leerzeilen vor dem Bereich der "HEADER LINES"!
  5. Stellen Sie sicher, daß alle Zeilen im "HEADER LINES"-Bereich zulässige Zeilen sind. Das erste Zeichen muß ein Buchstabe sein. Die Informationen sollten im "BODY"-Bereich stehen. Erfinden Sie keine eigenen "HEADER"-Zeilen!
  6. Kontrollieren Sie, ob zwischen dem "HEADER LINES"-Bereich und dem "BODY"-Bereich eine Leerzeile existiert.
  7. Speichern Sie die Datei als reinen ASCII-Text. Wenn Sie z.B. Microsoft Word benutzen, benutzen Sie "Speichern unter" und wählen Sie "Text mit Umbrüchen."
  8. Wenn Sie die Datei auf einem Mac erzeugen, stellen Sie beim Upload die Text-Option ein. (Unix Rechner haben andere Codes, die das Zeilenende beschreiben.)
Wenn Sie diese Punkte beachten, haben Sie ein weites Feld an Möglichkeiten. Sie können jeden beliebigen zulässigen Header in Ihre Mail einbauen (z.B. Bcc:, X-Face oder Organization:). Seien Sie kreativ! Aber bauen Sie keine Header ein, die Ihr Webmaster nicht sehen soll, weil alle Messages, die nicht ausgeliefert werden können (sogenannte bounced messages) an ihn geschickt werden! Nun können Sie Ihre E-Mail-Vorlage auf den WWW-Server spielen und sie mit Ihrem Webbrowser ansehen.

2. Einen Link auf Ihrer Webseite zu der Vorlagen erzeugen.

Hier ist ein Beispiel:
Möchten Sie die Brücke überqueren? Füllen Sie mein "drei Fragen"-Formular aus und senden Sie es mir ausgefüllt per E-Mail zurück:<hotline@muenster.de>.
Auch, wenn Sie ein richtiges HTML-Formular auf Ihrer Seiten anbieten wollen, sollten Sie diese Möglichkeit für Benutzer, die keine Webformulare ausfüllen können, vorhalten.

3. Entscheiden, ob ein mailto: Link ausreicht.

Es gibt bereits in HTML die Möglichkeit eine E-Mail zu erzeugen. Bevor Sie sich die Arbeit machen, ein Formular zu entwerfen, sollten Sie entscheiden, ob es das wirklich wert ist. Formulare haben zwei große Nachteile:
  1. Sie werden viele E-Mails von Leuten erhalten, die einfach nur so vorbeigesurft sind.
  2. Die E-Mail-Adresse des Benutzers muß von ihm per Hand eingegeben werden und wird oftmals falsch angegeben, so daß Sie keine Möglichkeit haben, auf die E-Mail zu reagieren. Dieses Problem entsteht bei mailto: Links weitaus seltener!
Für ein richtiges Formular spricht allerdings die Möglichkeit, auch von den öffentlichen Terminals in Münster eine E-Mail an Sie schicken zu können. Auf den öffentlichen Terminals funktioniert der mailto: Link nicht.

4. Das HTML Formular entwerfen.

Wenn Sie sich für ein HTML-Formular entschieden haben, brauchen Sie einen Weg, wie die Benutzer ihre E-Mail-Adresse eingeben können. Bei einem mailto: Link füllt der Webbrowser dieses Feld in der E-Mail automatisch aus. In einem Formular müssen Sie eine Zeile im "Header"-Bereich Ihrer Vorlagedatei hinzufügen. Ungefähr so:

From: [email]
Hier ist ein Beispiel für ein HTML-Formular.
Ihre E-Mail-Adresse:

Ihr Name:

Ihr Anliegen:

Ihre Lieblingsfarbe:

(Dieses Beispiel schickt keine E-Mail ab!)


Hier ist der HTML-Code:
<FORM METHOD="POST"

                 ACTION="http://www.muenster.de/cgi-bin/cgiecho/~silva/questions3.txt">

Ihre E-Mail-Adresse: <INPUT NAME="email"><p>
Ihr Name: <INPUT NAME="yourname"><p>
Ihr Anliegen: <INPUT NAME="quest"><p>
Ihre Lieblingsfarbe: <INPUT NAME="colour"><p>
<INPUT TYPE="submit" value="E-Mail schicken">
</FORM>
Dies ist ein sehr einfaches Beispiel. Beachten Sie bitte, daß der NAME jeder Eingabe-Box mit einem Feld in Ihrer E-Mailvorlage übereinstimmen muß! In diesem Beispiel wären das email, yourname, quest und colour. Das ist der Kernpunkt in der Benutzung des cgiemail-Skripts. Stellen Sie sicher, daß die beiden Namen exakt übereinstimmen. Wenn Sie ein Feld NAME="colour" in Ihrem HTML-Formular und [color] in Ihrer E-Mail-Vorlage haben, wird die Eingabe nicht in der E-Mail erscheinen!

5. Kompliziertere HTML-Formulare.

Eine gute Anleitung für Formulare gibt's beim NCSA. Alle Beispiele können mit dem cgiemail-Skript benutzt werden, indem Sie die ACTION anpassen.

Alle Formular-Eingabetypen (Radio-Buttons etc.) arbeiten genauso. Jede Eingabe braucht einen NAME und dieser NAME muß in eckigen Klammern in Ihrer E-Mail-Vorlage erscheinen. So einfach ist das.

6. Kontrollieren, ob ACTION richtig gesetzt ist.

Der schwierigste Teil ist, das ACTION-Attribut richtig zu setzen. Nehmen Sie zunächst einmal die Adresse Ihrer Template-Datei:

        http://www.muenster.de/~silva/questions3.txt

   \                    /\                     /

    `----- Part 1 -----'  ` ----- Part 2 -----'

        
Dann setzen Sie den Namen des Test-Skripts in die Mitte. Das ist hier ``/cgi-bin/cgiecho'', also sieht die ACTION so aus:



http://www.muenster.de/cgi-bin/cgiecho/~silva/questions3.txt

\                    /\               /\                   /

 `----- Part 1 -----'  `-script name-'  ` ---- Part 2 ----'

                
Den ersten Teil können Sie auch weglassen, außer wenn Sie das ganze zunächst lokal auf Ihrem eigenen Rechner ausprobieren. (Wenn Sie den letzten Teil nicht verstanden haben, lassen Sie Teil 1 ruhig ohne Bedenken weg.)

7. Das Formular mit cgiecho testen.

Zum Testen Ihres Formulars steht das Skript cgiecho zur Verfügung. Wenn Sie Ihr Formular in Ihren Webbrowser laden und ausgefüllt abschicken, sollten Sie einen Eindruck davon gewinnen, wie die daraus erzeugte E-Mail aussehen wird. Wenn Sie stattdessen eine Fehlermeldung bekommen, haben Sie mit großer Wahrscheinlichkeit das ACTION-Attribut nicht richtig gesetzt. Bitte lesen Sie sich noch einmal den letzten Schritt durch. Falls einige Ihrer Eingabedaten nicht auf der bearbeiteten Ausgabe erscheinen, kontrollieren Sie, daß Sie, ob die Namen der Input-Felder exakt mit den Platzhaltern in der Text-Vorlage übereinstimmen! Beispielsweise: NAME="yourname" im HTML-Formular und [yourname] in der Text-Vorlage.

8. Das Formular öffentlich machen.

Um Ihr Formular "scharf" zu machen, müssen Sie nun noch das Test-Skript cgiecho durch das Skript cgiemail im ACTION-Eintrag des Formular-Attributes tauschen. Dazu ersetzen Sie einfach das Wort "cgiecho" durch "cgiemail". Testen Sie das Skript. Wenn Sie nicht innerhalb von ein paar Minuten eine E-Mail erhalten, sollten Sie zurück zum ersten Schritt gehen und Ihre Text-Vorlage-Datei kontrollieren. Wenn's funktioniert: Herzlichen Glückwunsch!

9. Fehler beheben, wenn Sie keine Mail bekommen.

Normalerweise wird E-Mail asynchron verschickt. Das ist effizienter und sicherer. Die E-Mail wird zunächst in eine Warteschlange gestellt, und der Server kann dann selbst entscheiden, wann er Zeit hat, die E-Mail zu verschicken.
Falls Sie keine E-Mail erhalten, können Sie -zum Testen- die Mail auch im synchronen Modus verschicken. Dann wird eine eventuell vom Mailserver erzeugte Fehlermeldung direkt als Webseite zurückgeliefert. Bitte schalten Sie diesen Modus nur zum Testen ein! Sie müssen dazu ein weiteres Formularfeld anlegen, welches als "hidden"-Feld nicht als Eingabefeld im Formular erscheint:

<INPUT TYPE="hidden" NAME="cgiemail-mailopt" VALUE="sync">

Bemerkung:
Manche Mailsysteme haben eine Option, daß Fehlermeldungen an eine spezifische Adresse geschickt werden können, die als Header-Eintrag in der Mail vorgegeben ist. Leider gibt es Fehler, bei denen auch diese Option nicht zuverlässig funktioniert. Sie können sich also nicht sicher sein, daß eine Fehlermeldung auch immer bei Ihnen landet.

Optional: Text zu der Erfolgsmeldung hinzufügen.

Wenn die E-Mail abgeschickt wurde, bekommt der Benutzer eine Webseite mit dem Titel ``Success'' angezeigt. Darin erscheint auch der Text der E-Mail ein weiteres Mal. Um diese Seiten anzupassen, können Sie ein einfaches verstecktes Feld mit dem Namen ``addendum'' in Ihrem Formular einfügen. Im VALUE-Attribut können Sie dann Ihren eigenen Text übergeben. Hier ein einfaches Beispiel:

<INPUT TYPE="hidden" NAME="addendum" VALUE="Herzlichen Dank!">

Wenn Sie davon ausgehen können, daß die Benutzer Ihres Formulars aktuelle Browserversionen benutzen (z.B. Lynx 2.6 oder Netscape 4.0, dann können Sie in diesem Feld auch HTML-Code übergeben. Allerdings müssen Sie darauf achten, daß alle Sonderzeichen entsprechend der HTML-Codierung ersetzt wurden. Wenn Sie z.B. folgende Rückmeldung geben wollen:
Herzlichen Dank!
dann würde der richtige HTML-Code so aussehen:
<em>Herzlichen Dank!</em>
Sie müßten also das folgende in Ihr Formular einfügen:


<INPUT TYPE="hidden" NAME="addendum"

 VALUE="&lt;em&gt;Herzlichen Dank!&lt;/em&gt;">

Optional: Eine eigene Erfolgsmeldung benutzen.

Wenn Sie eine völlig eigene Antwortseite erzeugen wollen, können Sie dies über ein verstecktes Formularfeld mit dem Namen ``success'' in Ihrem Formular einstellen, z.B.:

<INPUT TYPE="hidden" NAME="success" VALUE="http://www.muenster.de/">

Diese Einstellung würde den Benutzer automatisch zurück auf die Homepage des publikom schicken. Bemerkung: Die angegebene URL muß mit / oder mit http:// starten. Sonst wird ein Fehler erzeugt! (Fehlermeldung: No variable substitutions)

Optional: Eine Auswahl von Eingaben als Pflichteingaben markieren.

Wenn Sie nicht oder nur teilweise ausgefüllte Formulare nicht akzeptieren wollen, können Sie die entsprechenden Eingabefelder im Formular als ``required'' kennzeichnen, indem Sie den Namen des Feldes im Formular und in der Text-Vorlage mit dem Schlüsselwort ``required'' versehen. Hier ist ein Beispiel: Im HTML-Formular:

Ihr Name: <INPUT NAME="required-yourname">

In der Text-Vorlage:

Ihr Name:      [required-yourname]

Optional: CGI-Umgebungsvariablen nutzen.

Als Zusatz zu den Eingaben, die aus dem Formular an das Skript übergeben werden, können Sie in der Text-Vorlage weitere Informationen verwenden (CGI environment variables) indem Sie den Variablennamen mit einem Dollar-Zeichen versehen und in Ihre Text-Vorlage einbauen. Beispiel:

        [$HTTP_USER_AGENT]

erzeugt den Namen der Browser-Version, mit der der Benutzer auf Ihr Formular zugegriffen hat in Ihrer E-Mail. Sie sollten den Benutzer in Ihrem Formular auf diesen Umstand hinweisen!
cgiemail <cgiemail@mit.edu>
Last modified: Thu May 1 12:47:11 EDT 1997

Übersetzung von Götz Schrader 30.06.97
Korrekturen von Ulrich Kathöfer 17.03.98


© publikom 2/98