Probleme mit dem Emailversand beim Kontaktformular

Hallo,

ich habe auf meiner Homepage (noch nicht online) ein Kontaktformular erstellt. Das Kontaktformular wird angezeigt.
Wenn ich jedoch auf den ‚Formular senden‘ Button klicke wird lediglich eine weiße Seite angezeigt (Die URL bleibt dabei jedoch unverändert) und es wird auch keine E-Mail versandt. Ich hoffe ihr könnt mir weiter helfen.

Schon einmal im Voraus vielen Dank für Eure Mithilfe.

Hier der zum Kontaktformular gehörige Quellcode:

/* Formular Stylesheet */
body, textarea, table {
font-family: Verdana, Sans-Serif;
font-size: 12px;
color: #000000;
}
body {
background-color: #D8D8D8;
}
table {
width: 500px;
margin: Auto;
border-spacing: 1px;
}
th, td {
border: Ridge 2px #C0C0C0;
padding: 3px;
}
label {
cursor: Pointer;
}
.pflichtfeld {
color: #FF0000;
border: 0px;
}
.hintergrund {
color: #000000;
background-color: #D8D8D8;
}
.danke, .danke a {
color: #000000;
padding: 10px;
width: 480px;
margin: Auto;
margin-top: 100px;
}

/* Tabelleneffekt: „Mouseover 2“ */
.hintergrund:hover {
background-color: #E9E9E9;
}

<?php $mailto = "[email protected]";
$url = "[http://www.test.com](http://www.test.com)"; error\_reporting(0); // PHP Meldungen anzeigen (0/1) $eingabefehler = ""; // Bitte leer lassen! $name = isset($\_POST["name"]) ? $\_POST["name"] : ""; $mailfrom = isset($\_POST["mailfrom"]) ? $\_POST["mailfrom"] : ""; $betreff = isset($\_POST["betreff"]) ? $\_POST["betreff"] : ""; $nachricht = isset($\_POST["nachricht"]) ? $\_POST["nachricht"] : ""; $nachricht1 = isset($\_POST["nachricht1"]) ? $\_POST["nachricht1"] : ""; // "Stadt/Städte" // Auswahlliste 1 "Reiseziel" $array = array( "Bitte auswählen", "Albanien", "Algerien", "Andorra", "Angola", "Anguilla", "Äquat.-Guinea", "Argentinien", "Armenien", "Ascension", "Aserbaidschan", "Äthopien", "Australien", "Azoren", "Bahamas", "Bahrain", "Bangladesch", "Barbados", "Belgien", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivien", "Bosnien", "Botswana", "Brasilien", "Brunei", "Bulgarien", "Cayman Inseln", "Chile", "China", "Costa Rica", "Deutschland", "Dänemark", "Dom. Republik", "Dominica", "Dschibuti", "Ecuador", "El Salvador", "Eritrea", "Estland", "Falkland Inseln", "Färöer", "Fidschi", "Finnland", "Frankreich", "Franz. Guyana", "Polynesien (Fr.)", "Gabun", "Gambia", "Georgien", "Ghana", "Gibraltar", "Grenada", "Griechenland", "Grönland", "Großbritannien", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Honduras", "Hongkong", "Indien", "Indonesien", "Irak", "Iran", "Irland", "Island", "Israel", "Italien", "Jamaika", "Japan", "Jemen", "Jordanien", "Jugoslawien", "Kambodscha", "Kamerun", "Kanada", "Kasachstan", "Katar", "Kenia", "Kirgisistan", "Kiribati", "Kolumbien", "Kongo (Zaire)", "Kongo (Rep.)", "Korea-Nord", "Korea-Süd", "Kroatien", "Kuba", "Kuwait", "Laos", "Lesotho", "Lettland", "Libanon", "Liberia", "Libyen", "Liechtenstein", "Litauen", "Luxemburg", "Macao", "Madagaskar", "Malawi", "Malaysia", "Malediven", "Mali", "Malta", "Marokko", "Marschallinseln", "Martinique", "Mauretanien", "Mauritius", "Mazedonien", "Mexiko", "Mikronesien", "Moldawien", "Monaco", "Mongolei", "Mosambik", "Namibia", "Nepal", "Neukaledonien", "Neuseeland", "Nicaragua", "Niederlande", "Niger", "Nigeria", "Norwegen", "Oman", "Österreich", "Pakistan", "Panama", "Papua-Neugui.", "Paraguay", "Peru", "Philippinen", "Polen", "Portugal", "Puerto Rico", "Reunion", "Ruanda", "Rumänien", "Russland Ost", "Russland West", "Sambia", "Samoa (USA)", "Samoa West", "Sao Tome", "Saudi-Arabien", "Schweden", "Schweiz", "Senegal", "Seychellen", "Sierra Leone", "Simbabwe", "Singapur", "Slowakei", "Slowenien", "Somalia", "Spanien", "Sri Lanka", "St. Helena", "St. Lucia", "St.Pierre/Mique.", "St. Vincent", "Südafrika", "Sudan", "Surinam", "Swasiland", "Syrien", "Tadschikistan", "Taiwan", "Tansania", "Thailand", "Togo", "Tonga", "Trinidad/Tobago", "Tschad", "Tschechien", "Tunesien", "Türkei", "Turkmenistan", "Uganda", "Ukraine", "Ungarn", "Uruguay", "USA", "Usbekistan", "Vanuatu", "Vereinigte Arabische Emirate", "Vatikan", "Venezuela", "Vietnam", "Weißrussland", "Zentralafri. Republik", "Zypern", ); $auswahl1 = isset($\_POST["auswahl1"]) ? $\_POST["auswahl1"] : ""; $auswahlliste1 = "";
foreach ($array as $value) {
$auswahlliste1 .= "\n " . $value . "";
}
$auswahlliste1 .= "\n ";

// Auswahlliste 2 "Sterne (min.)"
$array = array(
"✩",
"✩ ✩",
"✩ ✩ ✩",
"✩ ✩ ✩ ✩",
"✩ ✩ ✩ ✩ ✩",
);
$auswahl2 = isset($_POST["auswahl2"]) ? $_POST["auswahl2"] : "";
$auswahlliste2 = "";
foreach ($array as $value) {
$auswahlliste2 .= "\n " . $value . "";
}
$auswahlliste2 .= "\n ";

// Auswahlliste 3 "1. Abflughafen"
$array = array(
"",
"Auswahl 1",
"Auswahl 2",
"Auswahl 3",
);
$auswahl3 = isset($_POST["auswahl3"]) ? $_POST["auswahl3"] : "";
$auswahlliste3 = "";
foreach ($array as $value) {
$auswahlliste3 .= "\n " . $value . "";
}
$auswahlliste3 .= "\n ";

// Auswahlliste 4 "2. Abflughafen (optional)"
$array = array(
"",
"Auswahl 1",
"Auswahl 2",
"Auswahl 3",
);
$auswahl4 = isset($_POST["auswahl4"]) ? $_POST["auswahl4"] : "";
$auswahlliste4 = "";
foreach ($array as $value) {
$auswahlliste4 .= "\n " . $value . "";
}
$auswahlliste4 .= "\n ";

// Auswahlliste 5 "3. Abflughafen (optional)"
$array = array(
"",
"Auswahl 1",
"Auswahl 2",
"Auswahl 3",
);
$auswahl5 = isset($_POST["auswahl5"]) ? $_POST["auswahl5"] : "";
$auswahlliste5 = "";
foreach ($array as $value) {
$auswahlliste5 .= "\n " . $value . "";
}
$auswahlliste5 .= "\n ";

// Checkbox
$checkbox1 = isset($_POST["checkbox1"]) ? $_POST["checkbox1"] : null; // "Flug"
$checkbox1Ck = isset($_POST["checkbox1"]) ? " checked='checked'" : null;
$checkbox2 = isset($_POST["checkbox2"]) ? $_POST["checkbox2"] : null; // "Hotel"
$checkbox2Ck = isset($_POST["checkbox2"]) ? " checked='checked'" : null;
$checkbox3 = isset($_POST["checkbox3"]) ? $_POST["checkbox3"] : null; // "Reise (Flug+Hotel)"
$checkbox3Ck = isset($_POST["checkbox3"]) ? " checked='checked'" : null;

// Auswahlliste Tag "Anreise"
$array = range(1, 31);
array_unshift($array, "-");
$tag = isset($_POST["tag"]) ? $_POST["tag"] : "";
$tagliste = "\n ";
foreach ($array as $value) {
$tagliste .= "\n " . $value . "";
}
$tagliste .= "\n \n ";

// Auswahlliste Monat "Anreise"
$array = array(
"-", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli",
"August", "September", "Oktober", "November", "Dezember"
);
$monat = isset($_POST["monat"]) ? $_POST["monat"] : "";
$monatsliste = "\n ";
foreach ($array as $zaehler => $value) {
$monatsliste .= "\n " . $value . "";
}
$monatsliste .= "\n \n ";

// Auswahlliste Jahr "Anreise"
$array = range(2013, 2038);
array_unshift($array, "-");
$jahr = isset($_POST["jahr"]) ? $_POST["jahr"] : "";
$jahresliste = "\n ";
foreach ($array as $value) {
$jahresliste .= "\n " . $value . "";
}
$jahresliste .= "\n \n ";

// Auswahlliste Tag 2 "Abreise"
$array = range(1, 31);
array_unshift($array, "-");
$tag2 = isset($_POST["tag2"]) ? $_POST["tag2"] : "";
$tagliste2 = "\n ";
foreach ($array as $value) {
$tagliste2 .= "\n " . $value . "";
}
$tagliste2 .= "\n \n ";

// Auswahlliste Monat 2 "Abreise"
$array = array(
"-", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli",
"August", "September", "Oktober", "November", "Dezember"
);
$monat2 = isset($_POST["monat2"]) ? $_POST["monat2"] : "";
$monatsliste2 = "\n ";
foreach ($array as $zaehler => $value) {
$monatsliste2 .= "\n " . $value . "";
}
$monatsliste2 .= "\n \n ";

// Auswahlliste Jahr 2 "Abreise"
$array = range(2013, 2038);
array_unshift($array, "-");
$jahr2 = isset($_POST["jahr2"]) ? $_POST["jahr2"] : "";
$jahresliste2 = "\n ";
foreach ($array as $value) {
$jahresliste2 .= "\n " . $value . "";
}
$jahresliste2 .= "\n \n ";

// Formular erstellen
// Innerhalb des Formulars dürfen nur einfache Anführungszeichen verwendet werden!
$formular = "
Name:

E-Mail: *

Betreff:



Flug



Hotel



Reise (Flug+Hotel)


Reiseziel:
" . $auswahlliste1 . "

Stadt/Städte:
" . $nachricht1 . "

1. Abflughafen:
" . $auswahlliste3 . "


2. Abflughafen (optional):
" . $auswahlliste4 . "


3. Abflughafen (optional):
" . $auswahlliste5 . "

Anreise

Tag: " . $tagliste . "
Monat: " . $monatsliste . "
Jahr: " . $jahresliste . "

Abreise

Tag: " . $tagliste2 . "
Monat: " . $monatsliste2 . "
Jahr: " . $jahresliste2 . "


Sterne (min.):
" . $auswahlliste2 . "

Nachricht: *
" . $nachricht . "



Bitte alle Pflichtfelder ausfüllen!    

\n";

// Wurde das Formular abgesendet
if ($_SERVER["REQUEST_METHOD"] == "POST" || isset($_POST["sendung"])) {

// Pflichtfelder überprüfen
// Die Meldungen müssen hier eventuell angepasst werden.
if (filter_var($mailfrom, FILTER_VALIDATE_EMAIL) === false) $eingabefehler .= "• Fehler in der E-Mail-Adresse!
";
if (strlen($nachricht) ";
if ($tag != "-" && $monat != "-" && $jahr != "-") if (!checkdate($monat, $tag, $jahr)) $eingabefehler .= "• Anreise ist ungültig!
";
if ($tag2 != "-" && $monat2 != "-" && $jahr2 != "-") if (!checkdate($monat2, $tag2, $jahr2)) $eingabefehler .= "• Abreise ist ungültig!
";

// Sind keine Eingabefehler vorhanden
if ($eingabefehler == "") {

// Diese Nachricht wird an Ihre E-Mail-Adresse gesendet.
$text = "
Name: $name
E-Mail: $mailfrom
Betreff: $betreff
Nachricht: $nachricht
Stadt/Städte: $nachricht1
Reiseziel: $auswahl1
Sterne (min.): $auswahl2
1. Abflughafen: $auswahl3
2. Abflughafen (optional): $auswahl4
3. Abflughafen (optional): $auswahl5
Flug: $checkbox1
Hotel: $checkbox2
Reise (Flug+Hotel): $checkbox3
Anreise: $tag . $monat . $jahr
Abreise: $tag2 . $monat2 . $jahr2
";

// E-Mail versenden
mb_internal_encoding("ISO-8859-1");
$Betreff = mb_encode_mimeheader($betreff, "ISO-8859-1", "Q");
$kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($name, "ISO-8859-1", "Q") .
"\nContent-Type: text/plain; Charset=ISO-8859-1;\n";
if (mail($mailto, $Betreff, $text, $kopfzeile)) {

// Bestätigung der E-Mail
echo " " .
"Vielen Dank, die Nachricht wurde versendet.

";

// Link zur Startseite
echo "Weiter zur Startseite ";
}
else {

// Wenn die Nachricht nicht versendet werden konnte,
// wird die E-Mail-Adresse für den direkten Kontakt eingeblendet.
echo " Beim Senden der Nachricht ist ein Fehler aufgetreten!
" .
"Bitte wenden Sie sich direkt an: " . $mailto . " ";
}
}
else {

// Eingabefehler und Formular ausgeben
echo str_replace("",
"Die Nachricht wurde aus folgendem Grund nicht versendet:
" .
$eingabefehler, $formular);
}
}
else {

// Formular ausgeben
echo $formular;
}
?>


Lösche mal die Zeile

error_reporting(0); // PHP Meldungen anzeigen (0/1)

Dann wird vermutlich eine aussagekräftige Fehlermeldung angezeigt statt einer leeren Seite.

HTH

Hallo,

wenn die Seite komplett weiß bleibt und nix anzeigt, lass dir im Browser mal den Seitenquelltext anzeigen. Dann siehst du gleich, ob und was beim Browser überhaupt ankommt.
Wenn da auch ziemlich leer ist, hat php die Verarbeitung des Skriptes wegen einem Fehler abgebrochen?
Kannst du dir php-Fehler anzeigen lassen? Falls du unter XAMPP entwickelst, sollte das möglich sein. Wenn du nur Webspace gemietet hast und darauf entwickelst, kannst du die Fehlermeldungen vermutlich nicht aktivieren.

Ist auf dem Server, auf dem du das Skript ausführst ein Mailserver installiert? Dein Webserver (ich vermute einfach mal, dass du den Apache benutzt) muss außerdem die Funktion mail() unterstützen. Bau dir in dem Zusammenahng mal eine Datei mit diesem Inhalt:

<?php // Show all information, defaults to INFO_ALL
phpinfo(); ?\> Ich habe deinen Quelltext jetzt nicht im Detail durchgeschaut, aber ich habe gleich am Anfang bei dieser Zeile gestutzt: $mailfrom = isset($\_POST["mailfrom"]) ? $\_POST["mailfrom"] : ""; Dass man an dieser Stelle ein Fragezeichen verwenden kann, ist mir neu. Das geht zwar in der URL um mehrere Felder der GET-Methode anzuhängen, aber meines Wissens nicht im Quelltxt. Außerdem verstehe ich nicht, für was der Doppelpunkt gut ist. Bitte schau mal auf diese Seite, ich glaube nämlich, du hast da was bei der isset-Syntax falsch verstanden: [http://php.net/manual/de/function.isset.php](http://php.net/manual/de/function.isset.php) Viele Grüße und viel Erfolg.

DANKE FÜR DEN TIPP.

Jetzt zeigt er folgende Fehlermeldung an:

Fatal error: Call to undefined function mb_internal_encoding() in E:\kunden\homepages\12\d461654316\www\Kontakt.php on line 388

und ich kann mit dieser Meldung nicht wirklich was anfangen. Kannst du mir sagen was damit gemeint ist? Es muss ja irgendwas mit Zeile 388 zu tun haben, die wie folgt lautet:

mb_internal_encoding(„ISO-8859-1“);

oder?

Gruß kleinmei

Hallo,

wenn du dir den HTML-Code zusammenstellst (z.B. $formular) nutzt du für die HTML-Parameter einfachen ’ und nicht doppelte ". Du mußt für PHP ’ und für HTML " verwenden, HTML versteht ’ als Parameter nicht.

Grüße
Tom

Wenn Du etwas nach der Fehlermeldung googelst, kannst Du die Antwort auch schneller selbst finden.

Es scheint, bei Dir ist die für die Funktion mb_internal_encoding(.) nötige Erweiterung nicht aktiviert. Hier steht ein bisschen was dazu:

http://php.net/manual/en/mbstring.installation.php

Weiteres müsste ich auch googeln.

Viel Erfolg!

Hallo kleinmei,

ich lese Deine Anfrage gerade von unterwegs. Bin erst nächste Woche von einer Dienstreise zurück, um näher untersuchen zu können, wo der Fehler liegt.
Wenn dann noch Bedarf besteht, bitte Bescheid sagen.

LG Frank

Hallo Frank,
leider besteht das Problem immer noch.
Hinzufügend lässt sich sagen, dass ich es jetzt geschafft habe eine Fehlermeldung anzeigen zulassen. Diese lautet wie folgt:

Fatal error: Call to undefined function mb_internal_encoding() in E:\kunden\homepages\12\d461654316\www\Kontakt.php on line 388

Ich danke dir jetzt schon mal für deine Hilfe!

LG,
kleinmei

Hallo kleinmei,

ich habe leider keinie Zeit, mir Deinen Code anzusehen. Wenn die Seite aber weiß bleibt, tippe ich darauf, dass es im PHP-Code einen Fehler gibt.

Gruß, Frank