PHP: Einfacher PHP-Formmailer
Hinweise zum Thema
Es gibt die Möglichkeit, HTML-Formulare durch ein mailto:
im action
-Attribut per E-Mail zu versenden. Allerdings ist diese Methode nicht sonderlich zuverlässig, da sie vom Browser des Benutzers abhängig ist. Es ist besser, einen Formmailer zu verwenden. Bei einem Formmailer ist es die Aufgabe des Web-Servers, die Mail zu versenden. Der Browser des Benutzers hat darauf dann keinen Einfluss.
Beispiel mit Erläuterungen
Beispiel:
<?php |
Erläuterung:
Zunächst werden im Script einige Einstellungen festgelegt. Was die einzelnen Optionen bewirken, können Sie den Kommentaren an den entsprechenden Stellen entnehmen.
Als nächstes wird geprüft, ob das $_POST
-Array vorhanden ist. Diese Prüfung soll verhindern, dass eine leere Mail abgeschickt wird, wenn das Script zum Beispiel einfach so im Browser durch Eingabe der URL aufgerufen wird. Sollte dies der Fall sein, wird der HTML-Teil angezeigt (s.u.).
Anschließend legt das Script die Variable $strMailtext
an. Diese ist momentan noch leer und wird später den Text der Mail beinhalten.
Danach geht es mit while()
und each()
sämtliche Elemente des $_POST
-Arrays durch und schreibt den Namen des Elementes, das Trennzeichen (definiert in $strDelimiter
) und den Inhalt des Elementes in die Variable $strMailtext
. Sollte ein Element ein Array sein, und der Fall ist, geht das Script mit foreach()
das neue Array durch und verfährt mit den Elementen genauso, wie mit allen anderen Variablen auch.
Anschließend werden noch bei Bedarf die Slashes vor den Anführungszeichen aus dem Mailtext entfernt und die Mail versendet (wenn es fehlschlägt, wird mit die()
das Script beendet und eine Fehlermeldung ausgegeben). Zuletzt wird noch die in $strReturnhtml
definierte Seite aufgerufen aufgerufen und das Script mit exit()
beendet.
Wenn das Formular nicht abgesendet wurde, sondern das Script direkt aufgerufen wurde, wird nur das Formular angezeigt. Dieses können Sie frei bearbeiten und weitere oder andere Formularelemente einbauen. Der Name der Script-Datei ist frei wählbar und wird automatisch in das action
-Attribut des <form>
-Tags eingefügt.
Beachten Sie:
Wenn Sie in Ihrem Formular Checkboxen oder Auswahllisten mit Mehrfachauswahl einbauen wollen, muss der Name dieser Felder mit einem []
enden, damit PHP weiß, dass es die Daten als Array behandeln soll. Im Beispielformular wird dies anhand der Checkboxen demonstriert.
Vor dem Aufruf der Funktion header()
darf das Script nichts ausgegeben haben (z.B. über print()
und echo()
), weil ansonsten ein Fehler erzeugt wird. Das bedeutet auch, dass vor dem PHP-Code, eingegrenzt durch <?php ... ?>
, kein HTML-Code sowie keine Leerzeichen und Leerzeilen stehen dürfen. <?php
muss also direkt am Dateianfang stehen.