Anleitung für das cgi-email Skript
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:
- 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].
- Kontrollieren Sie, ob die Adresse im To: Feld die richtige ist!
- Löschen Sie alle Leerzeilen im Bereich der "HEADER LINES"!
- Löschen Sie alle Leerzeilen vor dem Bereich der "HEADER LINES"!
- 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!
- Kontrollieren Sie, ob zwischen dem "HEADER LINES"-Bereich und dem "BODY"-Bereich eine Leerzeile existiert.
- 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."
- 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.
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.
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:
- Sie werden viele E-Mails von Leuten erhalten, die einfach nur so
vorbeigesurft sind.
- 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.
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.
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!
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.
| Der schwierigste Teil ist, das ACTION-Attribut richtig zu setzen.
Nehmen Sie zunächst einmal die Adresse Ihrer Template-Datei: |
| 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.) |
| 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. |
| 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! |
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. |
| 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="<em>Herzlichen Dank!</em>">
| 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) |
| 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]
| 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 |