Anmeldeformular mit Mailfunktion

Vertigo21

Erfahrenes Mitglied
Aloha.

Ich bin grade dabei ein Anmeldeformular für eine von mir organisierte LAN- Party zu schreiben. Das Formular ist ein simples HTML- Formular dessen Eingaben dann per PHP- Mail an meine Email-Adresse geschickt werden sollen.

Nun schreibe ich schon seit fast einer Woche daran- ohne Erfolg. Das Kontaktformular, das es ebenfalls auf der Seite gibt benutzt exakt denselben Quelltext und funktioniert. Bei dem Anmeldeformular gibt es lediglich mehr Überprüfungsvariablen ob die Eingaben auch gemacht wurden.

Ich finde den Fehler im Anmeldeformular aber einfach nicht. Jedes mal wenn ich versuche eine Mail damit zu schicken erhalte ich von meinem Server folgenden Fehler:

***************************
A message that you sent contained a recipient address that was incorrectly
constructed:

Absender: missing or malformed local part (expected word or "<")

The message has not been delivered to any recipients.

------ This is a copy of your message, including all the headers. ------

To: meine@adresse.de
Subject: Ihre Anmeldung für die LAN
Absender: 'Anmeldeformular'


blablabla Dies ist ein TESTTEXT. Wenn Sie das hier lesen können brauchen Sie keine Brille.
***************************

Und das hier ist der Code:
PHP:
 <?
 //***Definition der Ausgabetexte in Variablen***
 $erfolg='<html><body background="images\sterne.gif"><font color="white"><p><h3><b>Ihre Mail wurde erfolgreich versendet.</b> Sie erhalten in Kürze eine Bestätigung per Email.</h3></font></body></html>';
 
 $misserfolg='<html><body background="images\sterne.gif"><font color="white"><p><h3><b>FEHLER!</b> Ihre Mail wurde nicht 
 versendet.</h3></font></body></html>';
 
 $text2="\n\nVielen Dank für Ihre Anmeldung. Sollten Sie beim nächsten Update der Teilnehmerliste noch nicht aufgeführt sein melden Sie sich bitte nochmal per Email über unser Kontaktformular.\n\n Mit freundlichen Grüßen\nDas Orgateam";
 
 //***Definition der Emailangaben***
 $empfaenger="meine@adresse.de";
 $betreff="ANMELDUNG für die LAN";
 $absender="Ich selbst";
 $betreff="Ihre Anmeldung für die LAN";
 $header="Absender: 'Anmeldeformular' \n";
 
 $ok1=false; $ok2=false; $ok3=false; $ok4=false; $ok5=false; $ok6=false; $ok7=false; $ok8=false;
 
 //***Prüfung, ob Eingaben gemacht wurden***
 if (isset($_POST["vorname"])) {$vorname=$_POST["vorname"];$ok1=true;}
 else {$ok1=false;}
 
 if (isset($_POST["nachname"])) {$nachname=$_POST["nachname"];$ok2=true;}
 else {$ok2=false;}
 
 if (isset($_POST["adresse"])) {$adresse=$_POST["adresse"];$ok3=true;}
 else {$ok3=false;}
 
 if (isset($_POST["plz"])) {$plz=$_POST["plz"];$ok4=true;}
 else {$ok4=false;}
 
 if (isset($_POST["wohnort"])) {$wohnort=$_POST["wohnort"];$ok5=true;}
 else {$ok5=false;}
 
 if (isset($_POST["geburtsdatum"])) {$geburtsdatum=$_POST["geburtsdatum"];$ok6=true;}
 else {$ok6=false;}
 
 if (isset($_POST["email"])) {$email=$_POST["email"];$ok7=true;}
 else {$ok7=false;}
 
 if ($_POST["agb"]==" JA") {$ok8=true;}
 else {$ok8=false;}
 
 //***Ausgabe einer Bestätigung und Versand, bzw. Fehlermeldung***
 if ($ok1==true && $ok2==true && $ok3==true && $ok4==true && $ok5==true && $ok6==true && $ok7==true && $ok8==true)
 {
 $text="Name:\n$vorname $nachname\n\nAdresse:\n$adresse\n$plz $wohnort\n\nGeburtsdatum:\n$geburtsdatum\n\nEmail:\n$email\n\n\nKommentar:\n$kommentar";
 
 mail($empfaenger,$betreff,$text,$header, "Absender: $absender");
  $text.="\n\n$text2";
  mail($email,$betreff2,$text,$header, "Absender: $absender"); echo $erfolg;
  echo "<meta http-equiv='refresh' content='3; URL=http://webserver/anmeldung.html'>";	 
 }
 else
 {
  echo $misserfolg;echo "<meta http-quiv='refresh'content='3;URL=http://webserver/anmeldung.html'>";
 } 
 ?>
 
Also ich hab in den Skript schon ein paar Fehler gefunden:
PHP:
$header="Absender: 'Anmeldeformular' \n";
Ich denke damit meinst du wohl
PHP:
$header="From: Anmeldeformular \r\n";

Dann solltest du dir noch mal die mail()-Funktion ansehen:
bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]] )
Und bei dir:
PHP:
mail($empfaenger,$betreff,$text,$header, "Absender: $absender");
   $text.="\n\n$text2";
   mail($email,$betreff2,$text,$header, "Absender: $absender");
Die ersten 4 Parameter stimmen zwar, aber als 5. Parameter darf man nur Kommandozeilen-Parameter angeben. Dieser parameter wurde aber ab PHP 4.2.3 in safe_mode deaktiviert.

PS: Header trennt man mit \r\n
Edit: hab einen Fehler korrigiert :-(
 
Zuletzt bearbeitet:
birnkammer hat gesagt.:
Die ersten 4 Parameter stimmen zwar, aber als 5. Parameter darf man nur Kommandozeilen-Parameter angeben. Dieser parameter wurde aber ab PHP 4.2.3 in safe_mode deaktiviert.

Was genau bedeutet das? Ich habe das jetzt so interpretiert, dass der Befehl nun folgendermaßen aussehen muss:

PHP:
   mail($empfaenger,$betreff,$text,$header);
   $text.="\n\n$text2";
   mail($email,$betreff2,$text,$header);

****************************EDIT****************************
OHA, und siehe da: Die Mail kommt normal an. DANKE! ;-)

Allerdings verstehe ich dann nicht, warum das im Kontaktformular normal funktioniert... *schulterzuck*. Egal, hauptsache es funktioniert!
 
Zuletzt bearbeitet:
Zurück