Problem mit Skrip aus Mailformular
Hallo, ich bin gerade dabei für die Internetseite meiner Mutter ein Kontaktformular zu erstellen.
Nur leider wird es nicht abgesendet.
Ich habe hier den Code:
Danke
Martin
Hallo, ich bin gerade dabei für die Internetseite meiner Mutter ein Kontaktformular zu erstellen.
Nur leider wird es nicht abgesendet.
Ich habe hier den Code:
Danke
Martin
<html>
Wir danken für Ihre Nachricht!
<br />
zurück
</html>
<php?
mail("123456@aon.at",
"Firma: $_POST[Firma]",
"Name: $_POST[Name]",
"Adresse: $_POST[Adresse]",
"PLZ: $_POST[PLZ]",
"Ort: $_POST[Ort]",
"Telefon: $_POST[Telefon]",
"Telefax: $_POST[Telefax]",
"Steuernr.: $_POST[Steuernr.]",
"Email: $_POST[Email]",
"Internet: $_POST[Internet]",
"Kunde: $_POST[Kunde]",
"Interesse: $_POST[Intesse]",
"Malerei_Blei: $_POST[Bleiverglasung_Glasmalerei]",
"Fusing_Formenbau_Glas+: $_POST[Fusing_Formenbau_Glas+]",
"Tiffany: $_POST[Tiffany]",
"Sandstrahlen: $_POST[Sandstrahlen]",
"Perlen_Schmuck: $_POST[Perlen_Schmuck]",
"Glasbau_Zubehoer: $_POST[Glasbau_Zubehoer]",
"Glas_Facetten: $_POST[Glas_Facetten]",
"Lasertechnik: $_POST[Lasertechnik]",
"Fortbildung_Seminare $_POST[Fortbildung_Seminare]",
"Wuensche, Anregungen $_POST[Wuensche_Anregungen]",
)
code(c) by Martin Strassser
?>
Nur leider wird es nicht abgesendet.
Ich habe hier den Code:
Danke
Martin
Hallo, ich bin gerade dabei für die Internetseite meiner Mutter ein Kontaktformular zu erstellen.
Nur leider wird es nicht abgesendet.
Ich habe hier den Code:
Danke
Martin
<html>
Wir danken für Ihre Nachricht!
<br />
zurück
</html>
<php?
mail("123456@aon.at",
"Firma: $_POST[Firma]",
"Name: $_POST[Name]",
"Adresse: $_POST[Adresse]",
"PLZ: $_POST[PLZ]",
"Ort: $_POST[Ort]",
"Telefon: $_POST[Telefon]",
"Telefax: $_POST[Telefax]",
"Steuernr.: $_POST[Steuernr.]",
"Email: $_POST[Email]",
"Internet: $_POST[Internet]",
"Kunde: $_POST[Kunde]",
"Interesse: $_POST[Intesse]",
"Malerei_Blei: $_POST[Bleiverglasung_Glasmalerei]",
"Fusing_Formenbau_Glas+: $_POST[Fusing_Formenbau_Glas+]",
"Tiffany: $_POST[Tiffany]",
"Sandstrahlen: $_POST[Sandstrahlen]",
"Perlen_Schmuck: $_POST[Perlen_Schmuck]",
"Glasbau_Zubehoer: $_POST[Glasbau_Zubehoer]",
"Glas_Facetten: $_POST[Glas_Facetten]",
"Lasertechnik: $_POST[Lasertechnik]",
"Fortbildung_Seminare $_POST[Fortbildung_Seminare]",
"Wuensche, Anregungen $_POST[Wuensche_Anregungen]",
)
code(c) by Martin Strassser
?>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92768
Url: https://administrator.de/forum/problem-mit-skrip-aus-mailformular-92768.html
Ausgedruckt am: 22.02.2025 um 15:02 Uhr
17 Kommentare
Neuester Kommentar
Du musst die "Komma" auch in die anführungszeichen setzen sonst denkt die Funktion du übergibts ihm immer einen neuen Parameter.
Der 2. Prameter ist der Betreff der fehlt bei dir komplett. Dann kommt der Text. Nur halt die Kommer auch in anführunszeichen setzen,
Schau dir mal die Doku dazu an: http://de.php.net/manual/de/function.mail.php
Der 2. Prameter ist der Betreff der fehlt bei dir komplett. Dann kommt der Text. Nur halt die Kommer auch in anführunszeichen setzen,
Schau dir mal die Doku dazu an: http://de.php.net/manual/de/function.mail.php
Hallo,
so sieht das schon viel besser aus
Wenn Du den Code als Code (s. Formatierungshilfe) eingeben würdest, könnte man dir einfacher antworten.
Denn Du kannst Dir die Zeilen ?? bis ?? sparen. Hier meine ich:
Du sprichst überall direkt $_POST an, daher brauchts das obige nicht.
Des Weiteren ist in Zeile ?? noch ein Fehler:
$fron (soll vermutlich '$from' heißen), sind aber beide nirgends definiert. Daher noch an den Anfang einfügen:
Zur Datenvalidierung schau Dir mal meine Anleitung hier an:
vg
Bytecounter
so sieht das schon viel besser aus
Wenn Du den Code als Code (s. Formatierungshilfe) eingeben würdest, könnte man dir einfacher antworten.
Denn Du kannst Dir die Zeilen ?? bis ?? sparen. Hier meine ich:
$field1 = ...
...
$field22 = ...
Du sprichst überall direkt $_POST an, daher brauchts das obige nicht.
Des Weiteren ist in Zeile ?? noch ein Fehler:
if (mail($empfaenger, "Kontaktformular", $send, $fron))
$fron (soll vermutlich '$from' heißen), sind aber beide nirgends definiert. Daher noch an den Anfang einfügen:
$from = "From: $POST['Email']";
Zur Datenvalidierung schau Dir mal meine Anleitung hier an:
vg
Bytecounter
Das scheint soweit ok. Was hast Du für ein Provider und auf was für einem Server (Win/Unix/Linux) liegt die Seite?
Probier einfach mal eine manuelle Mail zu senden. Erstell eine neue Datei (z. B. mail.php) mit folgendem code:
Wenn das auch nicht klappt, dann liegt es an anderen Einstellungen / Voraussetzungen.
Probier einfach mal eine manuelle Mail zu senden. Erstell eine neue Datei (z. B. mail.php) mit folgendem code:
<?php
$recipient = "meine_mail@mein_host.tld";
$subject = "Testmail";
$content = "Inhalt meiner Testmail";
$sender = "From: automailer@mein_host.tdl";
echo "<p>Sende Mail</p>";
$mailsuccess = mail ($recipient, $subject, $content, $sender);
if ($mailaccess) {
echo "<p>Mailversand scheint ok</p>";
}
else {
echo "<p>Fehler beim Mailversand</p>";
}
?>
Wenn das auch nicht klappt, dann liegt es an anderen Einstellungen / Voraussetzungen.
Anscheinend hab ich meinem letzten Kommentar nicht gespeichert 
Also nochmal:
Wenn das geklappt hat, dann ist es ein (Flüchtigkeits-)fehler in Deinem Script. Würde das Ganze nun Schritt für Schritt testen:
Ändere Deine PHP erstmal wie folgt ab:
Bei dem Script solltest Du eine Mail erhalten, allerdings eben nur mit einem Satz. Aber das ist ja nur zum Test. Wenn das läuft, dann ersetzt Du Zeile 6:
Funktioniert das auch, fügst Du die weiteren Felder einfach hinzu. Dann sollte das funktionieren.
Sollte er Dir keine Zeilenumbrüche in der Mail darstellen (was ich nicht glaube), ersetzt Du \n durch \r\n.
Also nochmal:
Wenn das geklappt hat, dann ist es ein (Flüchtigkeits-)fehler in Deinem Script. Würde das Ganze nun Schritt für Schritt testen:
Ändere Deine PHP erstmal wie folgt ab:
<?php
$empfaenger = "123456@aon.at";
$from = "From: $POST['Email']";
$send = 'Guten Tag, Sie erhalten eine neue Anfrage';
if (mail($empfaenger, 'Neue E-Mail', $send, $from))
{
echo "Ihre E-Mail wurd erfolgreich abgesendet. Sie erhalten bald eine Nachricht von uns.";
}
else
{
echo "Bitte schauen Sie nochmal nach, ob Sie alle Felder ausgefuellt hast.";
}
?>
Bei dem Script solltest Du eine Mail erhalten, allerdings eben nur mit einem Satz. Aber das ist ja nur zum Test. Wenn das läuft, dann ersetzt Du Zeile 6:
...
$send = "\nGuten Tag, Sie erhalten eine neue Anfrage\n\n";
$send .= "Firma: ".$_POST["Firma"]."\n";
$send .= "Name: ".$_POST["Name"]."\n";
...
Funktioniert das auch, fügst Du die weiteren Felder einfach hinzu. Dann sollte das funktionieren.
Sollte er Dir keine Zeilenumbrüche in der Mail darstellen (was ich nicht glaube), ersetzt Du \n durch \r\n.
OK, wenn er in dem Testscript die Mail versendet hat, dann muss es an dem Code liegen.
Eventuell blockiert der Webserver die Mailaddy des Absenders. Allerdings müsste mail trotzdem einen Wert zurückliefern - sprich, die if{} wird offensichtlich auch nicht ausgeführt.
Welche php-Version läuft auf dem Server? Das bekommst Du mit phpinfo() raus.
Ansonsten ändere das mal ab:
Zeile 4:
$from = "From: deine_mail@deine_domain.at";
Zeile 8-15:
Eventuell blockiert der Webserver die Mailaddy des Absenders. Allerdings müsste mail trotzdem einen Wert zurückliefern - sprich, die if{} wird offensichtlich auch nicht ausgeführt.
Welche php-Version läuft auf dem Server? Das bekommst Du mit phpinfo() raus.
Ansonsten ändere das mal ab:
Zeile 4:
$from = "From: deine_mail@deine_domain.at";
Zeile 8-15:
$mailsuccess = mail ($empfaenger, 'Neue E-Mail', $send, $from);
if ($mailsuccess) {
echo "Mail wurde versendet";
}
else {
echo "Fehler beim Mailversand";
}
So,
das Script ist korrekt, wie bereits per PM (hier nur nochmal für alle) scheint Dein Mailserver nicht zulässige Mailabsender (also Domains, die nicht zum Server "gehören") abzuweisen.
Daher kannst Du als Absender nicht die Kundenmailadresse nehmen, sondern musst Deine eigene (oder erstellst z. B. eine noreply@yourdomain.tld) als Absender eintragen.
Um auf eingehende Formularanfragen trotzdem mit der "Antworten"-Funktion des Mailprogramms zu können, kannst du das über den Mailheader regeln:
Mit Reply-To wird dem Mailprogramm mitgeteilt, wohin es eine Antwort schicken soll. Diese kann und darf durchaus von der Absenderadresse abweichen.
vg
Bytecounter
das Script ist korrekt, wie bereits per PM (hier nur nochmal für alle) scheint Dein Mailserver nicht zulässige Mailabsender (also Domains, die nicht zum Server "gehören") abzuweisen.
Daher kannst Du als Absender nicht die Kundenmailadresse nehmen, sondern musst Deine eigene (oder erstellst z. B. eine noreply@yourdomain.tld) als Absender eintragen.
Um auf eingehende Formularanfragen trotzdem mit der "Antworten"-Funktion des Mailprogramms zu können, kannst du das über den Mailheader regeln:
<?php
// Hinter $from = ... einfügen:
$reply = $_POST['Email'];
$header = "From: Mailform <$form>\n";
$header .= "Reply-to: $reply\n";
// Und dann ändern wir mail() noch ab:
$mailsuccess = mail ($empfaenger, 'Neue E-Mail', $send, $header);
Mit Reply-To wird dem Mailprogramm mitgeteilt, wohin es eine Antwort schicken soll. Diese kann und darf durchaus von der Absenderadresse abweichen.
vg
Bytecounter