Kontaktformular

bloodytriker

Mitglied
hi leute,
ich bins mal wieder mit neuem problem^^

ich hab mir ein test kontaktformular geschrieben, das so weit auch funktioniert.
nur irgendwie wird die mail nicht verschickt.
auf meinem server hab ich auch eine email adresse mit smtp server eingetragen, aber dennoch keine email im postfach.

die if's sind erfüllt! das script gibt "Nachricht erfolgreich gesendet!

[30.Jun.2010]" aus.

hier mal mein quellcode:
PHP:
<?PHP
$action = $_GET['action'];
$name = $_POST['name'];
$email = $_POST['email'];
$nachricht = $_POST['nachricht'];
$anzahl = $_POST['karten'];
$tel = $_POST['tel'];


$sendto = "email@test.de";

$message = "
Name :  $name
Email :  $email
Anzahl Karten : $anzahl
Tel. Nummer: $tel

Nachricht : 
$nachricht
";
 
if ($action == "send") {
  if ($name == "" || $anzahl == "" || $nachricht == "" || $tel == "" || !preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $email)) {
      echo "Es wurden nicht alle Felder korrekt ausgefällt!";
  } else {
      mail($sendto, "Kartenkauf:".$name ." [" . date("d.M.Y") ."]", $message);
      echo "Nachricht erfolgreich gesendet!<p>[" . date("d.M.Y") . "]";
  }
} else {
?>
 
<form action="kontakt.php?action=send" method="POST">
<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="200" valign="middle" class="mainpage">Ihr Name : </td>
    <td height="35" valign="middle"><input type="text" name="name" size="20"></td>
  </tr>
  <tr>
    <td valign="middle" class="mainpage">Ihre Emailadresse : </td>
    <td height="35" valign="middle"><input type="text" name="email" size="20"></td>
  </tr>
  <tr>
    <td height="22" valign="middle" class="mainpage">Anzahl Karten:</td>
    <td height="35" valign="middle"><input type="text" name="karten" size="20"></td>
  </tr>
  <tr>
    <td height="22" valign="middle" class="mainpage">Tel. Nummer:</td>
    <td height="35" valign="middle"><input type="text" name="tel" size="20"></td>
  </tr>
  <tr>
    <td valign="middle" class="mainpage">Text:</td>
    <td height="180" valign="middle"><textarea name="nachricht" cols="50" rows="10"></textarea></td>
  </tr>
</table>
<div align="center"><input type="submit" value="Abschicken"></div>
</form>
 
<?PHP
}
?>
 
Die Meldung "Nachricht erfolgreich versendet" erhältst du aber weil die vorherige Bedingungen erfüllt sind, nicht weil die mail-Funktion erfolgreich ausgeführt wurde.

Ändere doch mal:

PHP:
mail($sendto, "Kartenkauf:".$name ." [" . date("d.M.Y") ."]", $message);
echo "Nachricht erfolgreich gesendet!<p>[" . date("d.M.Y") . "]";

so ab:

PHP:
if (mail($sendto, "Kartenkauf:".$name ." [" . date("d.M.Y") ."]", $message)) {
  echo "Nachricht erfolgreich gesendet!<p>[" . date("d.M.Y") . "]";
} else {
  echo "Fehler beim Senden";
}
 
Genau, das solltest du auf jeden Fall machen.
Des Weiteren kannst du, um die Ursache des Fehlers zu finden auch das error reporting am Anfang des Scripts einschalten:
PHP:
error_reporting(E_ALL);
 
$sendto = "email@test.de";

Das steht aber nur hier so drin oder ist das die Mailadresse wo du es hinschickst?

Außerdem wo testest du das überhaupt, "lokal" am heimischen PC oder "online". Wenn du es nur lokal testest, wird die Nachricht vielleicht deshalb nicht verschickt weil kein Mailserver vorhanden ist (wobei dann eigentlich eine Fehlermeldung erscheinen müsste).
 
ein mailserver hab ich lokal eingerichtet "Mercury".
ich hab es aber auch schon online versucht!
bei meinem freespace kann man extra eine email adresse mit smtp server einstellen.
aber beides funktioniert nicht.

die email adresse ist eigentlich eine private von mir, hier hab ich die nur geändert.

mittlerweile bekomme ich merkwürdige fehlermeldungen:
"Undefined Index: variable ...."

und zwischen durch auch mal
"Felder wurden nicht völlständig ausgefüllt"

jetzt bin ich völlig verwirrt!!
hab die syntax schon überprüft, den aufbau des codes mit tutorials verglichen usw...
aber noch keine lösung -.-
 
Also wenn du jetzt plötzlich Fehlermeldungen bekommst die vorher nicht da waren, tippe ich darauf das du am Code etwas verändert hast.

Dann solltest du diesen nochmal komplett hier reinstellen und auch die Fehlermeldungen dazu.
 
lokal liegt der fehler am mercury, da meckert er wegen smtp.

online gibt es keine fehlermeldung, nur "Fehler beim Senden"

http://blockcs.kilu.de/kontakt.php?

PHP:
<?PHP

$action = $_GET['action'];
if ($action == "send") {

error_reporting(E_ALL);  

$name = $_POST['name'];
$email = $_POST['email'];
$nachricht = $_POST['nachricht'];
$anzahl = $_POST['karten'];
$tel = $_POST['tel'];

$message = "
Name :  $name
Email :  $email
Anzahl Karten : $anzahl
Tel. Nummer: $tel

Nachricht : 
$nachricht
";



  if ($name == "" || $anzahl == "" || $nachricht == "" || $tel == "" || !preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $email)) {
      echo "Es wurden nicht alle Felder korrekt ausgefällt!";
  } else {
     if( mail("dante3@hotmail.de", "Kartenkauf: $name ", "test"))
	 {
      echo "Nachricht erfolgreich gesendet!<p>[" . date("d.M.Y") . "]";
	  }else
	  {
	  echo "Fehler beim Senden"; 
	  }
  }
} else {
?>
 
<form action="kontakt.php?action=send" method="post">
<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="200" valign="middle" class="mainpage">Ihr Name : </td>
    <td height="35" valign="middle"><input type="text" name="name" size="20"></td>
  </tr>
  <tr>
    <td valign="middle" class="mainpage">Ihre Emailadresse : </td>
    <td height="35" valign="middle"><input type="text" name="email" size="20"></td>
  </tr>
  <tr>
    <td height="22" valign="middle" class="mainpage">Anzahl Karten:</td>
    <td height="35" valign="middle"><input type="text" name="karten" size="20"></td>
  </tr>
  <tr>
    <td height="22" valign="middle" class="mainpage">Tel. Nummer:</td>
    <td height="35" valign="middle"><input type="text" name="tel" size="20"></td>
  </tr>
  <tr>
    <td valign="middle" class="mainpage">Text:</td>
    <td height="180" valign="middle"><textarea name="nachricht" cols="50" rows="10"></textarea></td>
  </tr>
</table>
<div align="center"><input type="submit" value="Abschicken"></div>
</form>
 
<?PHP
}
?>
 
Kann es nicht Probleme geben wenn die Form keinen Namen hat?

HTML:
<form action="kontakt.php?action=send" method="post">

So wie bei dir. Sonst finde ich jetzt nichts was auf einen Fehler hindeutet.

NACHTRAG:
Außerdem was ich auch noch sehe. Kann man bei "action=" einen GET-Parameter anhängen (und diesem nach dem Senden auch abfragen) obwohl man das Formular via POST verschickt?
 
Zuletzt bearbeitet:
Probleme wegen fehlendem Namen kann es keine geben.
Auch ein GET-Parameter in der Action trotz method="POST" ist möglich.

Bei welchem Hoster steht dein Server denn? Eventuell kann ich da helfen.
 
Zurück