Moin,
hast du dir vor mail() schon mal den Inhalt der verwendeten Variablen anzeigen lassen?
Bist du dir sicher, dass du den 5. Parameter bei mail brauchst und dieser auch richtig ist?
http://www.php.net/manual/de/function.mail.php
Hallo zusammen,
ich bin nun schon seit Stunden auf Fehlersuche in meinem PHP-Code und irgendwie komm ich einfach nicht weiter. Ich hatte ein Script geschrieben (schon länger her) und als ich es damals getetstet habe lief es ohne Probleme doch nun möchte ich es in eine Seite einbauen und auf einmal geht es nicht mehr. Zuerst kam immer das die Mail nicht gesendet werden kann habe dann bemerkt das ich unter (mail($to, $subject, $message, $from, $email)) das $email vergessen hatte, nun kommt keine Fehlermeldung mehr bzw. die Nachricht "wurde gesendet" jedoch kommt nirgendwo eine Mail an.
Hier ein Blick in meine kontakt.php
Hoffe es kann mir jem. weiterhelfen. Bin nicht wirklich fit in PHP, seid also bitte nicht so streng mit mirPHP-Code:<?php
function mailCheck($email) {
return preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-.]+\.([a-zA-Z]{2,4})$/", $email);
}
$formok = false;
$namevalue = "";
$Nameok = false;
$emailok = false;
$Nachrichtok = false;
$homepageok = false;
$Auswahlok = false;
if(isset($_POST["sendgbentry"])) {
if (!isset($_POST["pampelmuse"]) or empty ($_POST["pampelmuse"]) ) {
$namevalue = "";
$Nameerror = $Nameerrormessage;
} else {
$namevalue = $_POST["pampelmuse"];
$Nameerror = "";
$Nameok = true;
}
if (isset($_POST["homepage"]) && $_POST["homepage"] ) {
$homepagevalue = "";
$homepageok = false;
$homepageerror = $homepageerrormessage;
} else {
$homepagevalue = "";
$homepageerror = "";
$homepageok = true;
}
if (!isset($_POST["zitronensaft"]) or empty($_POST["zitronensaft"]) ) {
$emailvalue = "";
$emailerror = $emailemptyerrormessage;
} else {
$emailvalue = trim($_POST["zitronensaft"]);
if (mailCheck($emailvalue)) {
$emailok = true;
$emailerror = "";
} else {
$emailerror = $emailwrongformaterrormessage;
}
}
if (!isset($_POST["apfelschorle"]) or empty($_POST["apfelschorle"]) ) {
$Nachrichtvalue = "";
$Nachrichterror = $Nachrichterrormessage;
} else {
$Nachrichtvalue = $_POST["apfelschorle"];
$Nachrichterror = "";
$Nachrichtok = true;
}
if (!isset($_POST["macaroni"]) or ($_POST["macaroni"] == "Bitte auswählen") ) {
$Auswahlvalue = "";
$Auswahlerror = $Auswahlerrormessage;
} else {
$Auswahlvalue = $_POST["macaroni"];
$Auswahlerror = "";
$Auswahlok = true;
}
if ($Nameok AND $homepageok AND $emailok AND Nachrichtok AND $Auswahlok) {
$formok = true;
}
//eingaben sind korrekt -> schreibe in DB und Erfolgsmeldung
if ($formok) {
$e = htmlspecialchars($_POST["zitronensaft"], ENT_QUOTES);
$l = htmlspecialchars($_POST["pampelmuse"], ENT_QUOTES);
$c = htmlspecialchars($_POST["apfelschorle"], ENT_QUOTES);
$h = htmlspecialchars($_POST["homepage"], ENT_QUOTES);
//Auswahlbox anfang
if ($_POST["macaroni"] == "Allgemein" OR $_POST["macaroni"] == "Support") {
$to = 'mail1@xyz.de';
}
if ($_POST["macaroni"] == "Katalog" ) {
$to = 'mail2@xxx.com';
}
if ($_POST["macaroni"] == "Bestellung" ) {
$to = 'mail3@zzz.de';
}
$subject = $_POST["macaroni"];
$message = "Name: " . $_POST["pampelmuse"] . "\r\n" . "E-Mail: " . $_POST["zitronensaft"] . "\r\n" . "Schrieb folgende Nachricht: " . "\r\n" . $_POST["apfelschorle"];
$from = 'From:' . $_POST["zitronensaft"];
$email = $_POST["zitronensaft"];
//Auswahl ende
if (mail($to, $subject, $message, $from, $email)) {
echo "<div id='gesendet'>Nachricht erfolgreich abgeschickt!</div>";
}
else {
echo "<div id='nichtgesendet'>Es ist ein Fehler aufgetreten! Nachricht konnte nicht gesendet werden.</div>";
}
} else
{echo "";}
}![]()
Moin,
hast du dir vor mail() schon mal den Inhalt der verwendeten Variablen anzeigen lassen?
Bist du dir sicher, dass du den 5. Parameter bei mail brauchst und dieser auch richtig ist?
http://www.php.net/manual/de/function.mail.php
Gruss Guin
Mein Blog
Hi Guin,
nein habe mir nichts anzeigen lassen. Wegen dem $email bin ich mir unschlüssig denn eigentlich steht es ja schon $from drin, mir ist es eben nur beim Testen aufgefallen das wenn ich das $email weg habe direkt die Meldung kommt kann nicht gesendet werden, aber ich bekomme nicht angezeigt was für ein Fehler.
Werde nochmal versuchen mir die einzelnen Variablen anzeigen zu lassen.
Bitte auch in die Doku zu mail gucken. Dort steht geschrieben, wofür die einzelnen Parameter gut sind.
Gruss Guin
Mein Blog
Habe jetzt mal die Variablen überprüft und dazu ne vielleicht etwas blöde Frage.
Bei der Variablen $to müsste doch wenn ich sie mir anzeigen lasse die emailaddresse stehen oder?
In meinem Fall steht da aber immer der Text der in der Auswahlbox angezeigt wird. Also z.b. ich wähle "Allgemeine Anfrage" aus entspricht ja dann
aber wie gesagt wird "Allgemeine Anfrage" (aus dem Formular) NICHT "Allgemein" (die ID des Formularfeldes) angezeigt.PHP-Code:if ($_POST["macaroni"] == "Allgemein" OR $_POST["macaroni"] == "Support") {
$to = 'mail1@xyz.de';
}
Also vermute ich mal das darin der Fehler liegt, da ja mail1@xyz.de angezeigt werden müsste.
Aber ich komm echt nicht weiter. Die Doku hab ich mir angeschaut verwirrt mich aber nur noch mehr.![]()
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Naja, halt mit echo $to;
Lass dir mal mit
deine übermittelten Formdaten anzeigen und vergleiche Sie mit deiner Prüfung.PHP-Code:var_dump($_POST);
Das Problem scheint mir zu sein, dass die Prüfung den Wert nicht abdeckt, der da aus deinem Formular ankommt.
Kannst Du den Quelltext des Feldes "macaroni" mal posten?
...zur Zeit außer Betrieb...
Also ich habe es jetzt mal überprüft, raus kam:
Eigentlich müsste bei macaroni ja die Email Addy stehen oder nicht?PHP-Code:array(6) { ["pampelmuse"]=> string(4) "nkin" ["zitronensaft"]=> string(10) "nkin@web.de" ["macaroni"]=> string(18) "Allgemeine Anfrage" ["homepage"]=> string(0) "" ["apfelschorle"]=> string(4) "Hallo Test" ["sendgbentry"]=> string(14) "Eintrag senden" }
Der Quelltext zum macaroni-Feld aus dem Formular:
PHP-Code:<select name="macaroni" id="macaroni" class="writeEntry_dropdown">
<option <?php if(empty($_POST["macaroni"])) echo 'selected' ?>Bitte auswählen</option>
<option <?php if($_POST["macaroni"] == "Allgemein") echo 'selected' ?>>Allgemeine Anfrage</option>
<option <?php if($_POST["macaroni"] == "Support") echo 'selected' ?>>Anfrage Support</option>
<option <?php if($_POST["macaroni"] == "Bestellung") echo 'selected' ?>>Anfrage Bestellung</option>
<option <?php if($_POST["macaroni"] == "Katalog") echo 'selected' ?>>Anfrage Katalog</option> </select>
Also so kann das ja nicht funktionieren: In deinem Code fragst Du auf "Allgemein" ab, schickst aber "Allgemeine Anfrage" an das Script.
Setz mal in deinem HTML für die Optionen einen value:
HTML-Code:<select name="macaroni" id="macaroni" class="writeEntry_dropdown"> <option value=""<?php if(empty($_POST["macaroni"])) echo ' selected="selected"'; ?>Bitte auswählen</option> <option value="Allgemein"<?php if($_POST["macaroni"] == "Allgemein") echo ' selected="selected"'; ?>>Allgemeine Anfrage</option> <option value="Support"<?php if($_POST["macaroni"] == "Support") echo ' selected="selected"'; ?>>Anfrage Support</option> <option value="Bestellung"<?php if($_POST["macaroni"] == "Bestellung") echo ' selected="selected"'; ?>>Anfrage Bestellung</option> <option value="Katalog"<?php if($_POST["macaroni"] == "Katalog") echo ' selected="selected"'; ?>>Anfrage Katalog</option> </select>
...zur Zeit außer Betrieb...
Ach sooooo, nun versteh ich den Fehler. Jetzt klappt's wunderbar. Super. Vielen Dank für die Hilfe!!!
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)