Kontaktformular wird nicht versendet

keksrest

Grünschnabel
hallo zusammen,
ich sitze heute nun schon den zweiten Tag an diesem blöden Kontaktformular und es will sich einfach nicht an meine emailadresse verschicken. es war anfangs ziemlich umfangreich, dass habe ich aber alles rausgelöscht um so möglichen Fehlern auf die Schliche zu kommen, aber es half nix. hab hier in dem Forum auch schon alle Beiträge dazu durchgelesen und meiner meinung nach alles richtig gemacht, aber es geht halt nicht. am anfang hat die Weiterleitung auf eine andere Seite (nachdem man den "Abschicken-Button" gedrückt hat) gut funktioniert. hab ich aus oben genannten Gründen rausgenommen.

so die zwei kleinen Codeschnipsel:

html:

<html>
<head>
<title>Kontaktformular</title>
</head>
<body>

<form name="form" action="kontakt.php" method="post">
<table witdh=100%>
<tr>
<td><p>Name:</td>
<td><br></td>
<td><input type="text" name="name" size="30"></td>
</tr>
<tr>
<td><p>E-Mail:</td>
<td><br></td>
<td><input type="text" name="mail" size="30"></td>
</tr>
<tr>
<td><p>Nachricht:</td>
<td><br></td>
<td><textarea name="nachricht" rows="5" cols="24"></textarea></td>
</tr>

<tr>
<td colspan=2><br></td>
<td><center><input type="submit" value="Abschicken"> <input type="reset" value="Reset"></td>
</tr>
</table>
</form>
</body>
</html>


php:

<?PHP

$name = $_POST['name'];
$nachricht = $_POST['nachricht'];
$mail = $_POST['mail'];

$empfaenger = "email@http://www.de";
mail("$empfaenger","$name","$nachricht","$mail");

?>


ps: die emailadresse habe ich hier durch eine fiktive ersetzt, als ich es getestet habe, habe ich schon meine richtige emailadresse eingegeben. wäre sehr dankbar wenn mir jemand helfen könnte.
 
Original geschrieben von keksrest
mail("$empfaenger","$name","$nachricht","$mail");

Schreibs mal ohne " "

PHP:
mail($empfaenger,$name,$nachricht,$mail);

Wo befindet sich der PHP-Code? Ich nehme doch an in der kontakt.php, oder nicht?
 
Wozu schreibst du die Variablen im mail()-Aufruf nochmal in" ?

Wenn du dir die Funktionsdefinition mal anschaust:
bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])

ist der Vierte Parameter Additional Headers, d.h. nicht irgendwas reinstopfen von dem man nicht weiss was es da soll sondern eben einen Mailheader definieren, z.B. so einen:

mail(1,2,3,"From: $mail\r\n");

oder eben Weglassen, da die eckigen Klammern ihn als optional kennzeichnen.
Ansonsten hilft dir in Zukunft ein Blick auf http://www.php.net
 
hab es geändert wie es Martys gesagt hat.
der PHP-Code befindet sich in der kontakt.php.

es funktioniert leider immer noch nicht.

was ben ben geschrieben hat verstehe ich leider nicht wirklich, da ich von php so gut wie keine Ahnung habe. bedeutet die Funktionsdefinition von bool mail, dass ich nur drei Parameter übergeben kann oder dass ich die E-Mail aus dem Formular nur in dieser bestimmten Codierung übergeben kann?

http://www.php.net kenne ich, habe auch schon einige Zeit mit der Seite verbracht aber ohne Erfolg, deswegen bin ich hier gelandet. gibt es noch andere ideen was ich falsch gemacht haben könnte? danke.
 
Also die Zeile sagt, das die Funktion mail() einen Boolschen Wert (TRUE oder FALSE) zurückliefert.
Empfangen tut diese Funktion die Pflichtparameter to (Empfänger), subject (Betreff) und message (Nachricht) jeweils als String.
somit würde ein mail("test@test.com", "testnachricht", "testmessage");
reichen, um eine Mail an test@test.com zu senden.
Wenn du nun zudem Headerinformationen hinzufügen willst, geht das über den optionalen Parameter 4.
Hierzu eben bei der Funktionsreferenz von php.net nachlesen, die ich dir nur empfehlen kann, wenn du nach Funktionen suchst oder nicht weisst wie diese exakt aufzurufen sind etc. Zumal oft noch nützliche Nutzerkommentare (englisch) dabeistehen.
Entweder über die Übersichtsseite oder eben die gesuchte Funktion in das Eingabefeld in der Kopfzeile eingeben.

Um nun am obigen zu überprüfen ob es einen Fehler gab könntest du z.B. so vorgehen
if( mail("test@test.com", "testnachricht", "testmessage") )
echo "Erfolgreich verschickt!";
else
echo "Fehler beim Senden!;

//Verdeutlichung bezüglich des Rückgabewertes
if( mail("test@test.com", "testnachricht", "testmessage") === TRUE)
 
Dir ist hoffentlich klar das du dazu auch einen Mailserver installiert haben musst um überhaupt die Sendmail Methode benutzen zu können oder?
 
Original geschrieben von SonicBe@m
Dir ist hoffentlich klar das du dazu auch einen Mailserver installiert haben musst um überhaupt die Sendmail Methode benutzen zu können oder?

nein, das war mir nicht bewußt. muß das auf dem Server installiert sein?

im Prinzip weiß ich was ein Header ist, aber in Bezug auf PHP will es mir noch nicht einleuchten.

habe eben mal die if-Schleife eingebaut:

Fehler beim Senden!

wird mir ausgegeben.

was nun?
 
Der Fehler liegt in der Anmerkung von SoniBe@m, was ich mal als selbstverändlich vorausgesetzt habe.
Der Server auf dem das ganze laufen soll muss einen Mailserver, bzw smtp Engine haben. Denn PHP macht auch nix anderes als die per mail() übergebenen Parameter an ein in der php.ini eingetragenen SMTP-Server weiterzuleiten.

Aufw welchem System soll das ganze denn später mal laufen bzw. läuft es jetzt?



EDIT: Vielleicht hilft dir der Thread bezüglich mailserver weiter: http://www.tutorials.de/forum/showthread.php?s=&threadid=76427&highlight=sendmail Ansonsten einfach mal die Threads in der Rubirk PHP nach dem Suchwort "sendmail" durchsuchen...
 
Zuletzt bearbeitet:
sorry das mit dem SMTP-Server wußte ich nicht.

Ich hab eine Domain und Webspace bei 1und1.de, das georderte Paket unterstützt leider gar kein php, also habe ich bei lima-city.de Free-Webspace geholt, der auch php unterstützen soll. Aber Deiner Meinung tut er das nicht bzw. ist da kein SMTP-Server. Werde mir jetzt noch von einem anderen Anbieter Webspace mit PHP-Unterstützung holen, aber wher weiß ich dann, dass der Anbieter auch einen Mailserver hat?
Brauche ich dann auch noch eine php.ini?

Wollte mir ev. hier http://hostloco.com/de/silver.php Webspace holen. Und nochmal meine Frage: Woher weiß ich dann, dass ich da einen Mailserver habe? nochmals danke.
 
Zurück