Der Doktor: PHP-Kontaktformular wird nicht abgeschickt

Nach der Erstellung eines Kontaktformulars wird die Mitteilung nicht an die angegebene E-Mail-Adresse abgeschickt. Ansonsten funktioniert alles? Hab ich einen Fehler im Code?

<?php

$Empfaenger = "xxx@xxx.at";

if($_REQUEST['Send'])
{
   if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']))
   {
      echo"Bitte gehen Sie <a href="javascript:history.back();">zurück</a> und füllen Sie alle Felder aus!";
   }
   else
   {
      $Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
      while(list($Formularfeld, $Wert)=each($_REQUEST))
      {
         if($Formularfeld!="Send")
         {
            $Mailnachricht .= $Formularfeld.": ".$Wert."\n";
         }
      }
      $Mailnachricht .= "\nDatum/Zeit: ";
      $Mailnachricht .= date("d.m.Y H:i:s");
      $Mailbetreff = "Kontakt: ";
      $Mailbetreff .= $_REQUEST['Betreff'];
      mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);
      echo"Vielen Dank für Ihre eMail!";
   }
}
else
{
   echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese zurück auf das <a href="kontakt.php">Kontaktformular</a>.";
}

?>

LG

  1. Hi!

    Nach der Erstellung eines Kontaktformulars wird die Mitteilung nicht an die angegebene E-Mail-Adresse abgeschickt.

    Und wo hängt das Script?

    Ansonsten funktioniert alles?

    Bis wohin wird der Code ausgeführt?
    Setzt doch mal ein echo "irgendwas"; hinter deine If-Abfragen. So kannst du sehen, wo es hängt.
    Eventuell ist eine deiner Bedingungen nicht erfüllt.

    Hab ich einen Fehler im Code?

    Statt $_REQUEST solltest du besser $_POST oder $_GET nehmen, je nachdem, wie deine Daten ankommen.
    Wenn es nur eine Möglichkeit gibt, wie dein zugehöriges Formular abgeschickt wird, dann lasse später auch nur diese Möglichkeit zu.

    Außerdem kannst du der Mailfunktion zusätzliche Header übergeben und solltest diese Möglichkeit auch nutzen.
    Du solltest u.a. die verwendete Zeichenkodierung angeben. Du willst doch sicherlich, daß Umlaute und/oder Sonderzeichen auch überall korrekt angezeigt werden?

    Außerdem mußt du alle Daten, die von außen kommen, in jedem Fall immer als "böse" ansehen, prüfen und ggf. bereinigen.
    Wenn du nicht willst, daß aus deinem Mailscript eine Spamschleuder wird, dann sieh zu, daß es nicht möglich ist, ungewollte Mailheader einzuschleusen.
    Filtere Zeilenumbrüche aus allen Eingaben.

    Ich kann leider jetzt nichts mehr dazu schreiben, weil ich tierisch unter Zeitdruck stehe.
    Wenn dazu später keiner genaueres geschrieben hat, schreibe ich heute abend noch was dazu.

    Schöner Gruß,
    rob