'/^ [\w.!#%&\*\/=\?\^\`\{\|\}\~+-]{1,64} \@ [[:alnum:].-]{1,255} \. [a-z]{2,6} $/xi', //prüft auf gültige E-Mail-Adresse nach RFC 2822, //erlaubt auch ungewöhnliche Adressen wie "{@heise.de"; //strengere Prüfung (erfordert z.B. mindestens 2 Zeichen vor @ //und im Domainnamen, schließt ungewöhnliche Adressen aus): //'Absender' => '/^[\w.+-]{2,64}\@[\w.-]{2,255}\.[a-z]{2,6}$/', 'Betreff' => '/^[[:print:]]{3,}$/', //restriktivere Variante: //'Betreff' => '/^[[:alnum:]\s\?.!,;:\(\)\/\"-]{3,}$/', 'Text' => '/^[[:print:][:space:]]{10,}$/' ); //Durchlaufe alle Formulardaten: foreach($_POST as $parameter => $wert) { //Formularfelder, die in $pruefung stehen, //müssen in die oben definierten Muster passen if(isset($pruefung[$parameter])) { if(!preg_match($pruefung[$parameter], $wert)) { $debug = bin2hex($wert); die("DEBUG #$debug# ". '
Eingaben unzureichend - bitte gehen Sie zurück zum Feld ' . $parameter . ': ' . $wert); } else { //Der Rest wird weggeworfen. unset($_POST[$parameter]); } } //Prüfe, ob die Absenderadresse einem gültigen MX-Host angehört //Zu jeder Domain in einer Mailadresse (nach dem @-Zeichen) //sollte ein Mail Exchange Resource Record (MX-RR) im Domain Name //System (DNS) eingetragen sein. Die MX-Hosts versenden die E-Mail //per SMTP. getmxrr() schreibt MX-Hosts in das Array $mxhosts //ACHTUNG: Dieser Befehl ist nur auf Unix-Maschinen implementiert, //unter anderen Betriebssystemen ist die Zeile zu streichen! //Außerdem scheint getmxrr() Probleme mit Umlautdomains zu haben. if(!getmxrr(substr(strstr($_POST['Absender'], '@'), 1), $mxhosts)) die("Konnte keine gültige Domain für " . $_POST['Absender'] . " finden!"); //Die Formulardaten sind ok -- der Mailversand wird vorbereitet: //mail() erwartet Empfänger, Betreff, Text und weitere Kopfdaten if(mail('email@website.de', $_POST['Betreff'], $_POST['Text'], "From:" . $_POST['Absender'])) { //Es hat geklappt: Bestätigung ausgeben echo "

Nachricht von " . $_POST['Absender'] . " an website.de gesendet!

"; } else { //Irgendwas ist schiefgelaufen :-( echo "

Nachricht konnte nicht gesendet werden!

"; } } else { //Es wurden keine Formulardaten übergeben -> //Gib einen HTML-Block mit dem Formular aus. ?>