Kein Mailversand via PHP

Okay, so langsam krieg ich wieder nen Durchblick. Hab schon seit geraumer Zeit nimmer wirklich in dem Bereich "gearbeitet", daher bin ich nicht mehr up-to-date (ich glaub man merkts :D ), ist dann halt blöd wenn alte "Werke" nicht mehr funktionieren wie sie sollten.

Aber selbst wenn ich $POST['Name'] verwende (da ich nichts per URL übergebe) sagt er mir immernoch "Undefined index".
Meiner Logik nach müsste das Problem also eher im Formular stecken, also das ich die Eingabefelder o.ä. nicht korrekt übergebe. Nur wüsste ich nicht wo ich da was ändern sollte.
Das hier ist der Code zum Formular:
PHP:
<form name="form1" method="post" action="index.php?link=kontakt">
<div class="kontakt">
<p class="minga">Dein Name:</p>
	<input name="Name" type="text" class="cssform" id="Name" size="80"> 
</div>
<div class="kontakt">
<p class="minga">Deine E-Mailadresse:</p>
	<input name="Mail" type="text" class="cssform" id="Mail" size="80"> 
</div>
<div class="kontakt">
<p class="minga">Deine Nachricht:</p>
	<textarea name="Nachricht" cols="77" rows="5" class="cssform" id="Nachricht">
</textarea> 
</div>
<div class="kontakt">
	<input name="Submit" type="submit" class="cssform" onClick="MM_validateForm('Name','','R','Mail','','RisEmail','Nachricht','','R');return document.MM_returnValue" value="Absenden">
    <input name="Submit2" type="reset" class="cssform" value="Zur&uuml;cksetzen">
</div>
</form>
 
Also das ?link=Kontakt bekommst du über $_GET['link'].
Alles andere sollte über $_POST kommen *mach mal vardumb($_POST).
Es ist halt nun mal Standard seit PHP5 das register_globals OFF ist ... und du somit alte Scripts die noch für register_globals ON geschrieben sind nicht mehr laufen.
 
Das "?link=kontakt" ist das bereits aufgerufene Script. Damit wird die Seite selbst aufgerufen - sprich: das Formular wird nicht an eine zweite Datei übergeben.

vardumb schreibt:
Code:
array(4) { ["Name"]=> string(4) "test" ["Mail"]=> string(12) "test@test.de" ["Nachricht"]=> string(6) "asdasd" ["Submit"]=> string(8) "Absenden" }
 
So, kann das Themenhijacking mal aufhören ? ;)
Also ich habe den Code jetzt geändert, er sieht jetzt so aus:
PHP:
<html>
<head></head>
<body>
<?php
error_reporting( E_ALL | E_STRICT );
ini_set( 'display_errors', 1);
$empfaenger = "ich@gmx.de";
$absender   = "webmaster@meinemails.de";
$betreff    = "PHP-Mail-Test";
$mailtext   = "Inhalt einer Mail zum Test von PHP";
$antwortan  = "webmaster@meinemails.de"; 

mail( $empfaenger,
      $betreff,
      $mailtext,
      "From: $absender\nReply-To: $antwortan"); 

echo "Mail wurde gesendet!";
?>
</body>
</html>
Ich erhalte eine schönes "Mail wurde gesendet", aber sonst passiert nichts, sprich es wird weder einen Fehler angezeigt, noch kommt eine Mail an (auch nicht im Spam Ordner).
Noch eine Idee?
 
PHP:
if(mail(...))
Soweit ich weis returned mail() einen boolean der ERFOLG / FEHLER signalisiert. Musst du mal im DOC nachlesen.
 
@Saftmeister:
Guter Punkt. Habe ich soeben gemacht und dabei festgestellt, das aus einem mir unerklärlichen Grund der Eintrag unter var/qmail/control/me nicht mehr vollständig war.
Nachdem ich ihn ergänzt habe, kommen Mails auch wieder an.
Lösung gefunden, Ursache unklar.
Vielen Dank für den Denkanstoß
 
Ich hab mein Problem lösen können!! Meine Fresse... :D
Fehler waren:
PHP:
<?php 
if(!isset($_POST['Name'])){
?>
Anstatt $_POST hatte ich da noch $_GET drin stehen...

Und dann hatte ich zwischenzeitlich (in meinem ersten Akt der Verzweiflung mit $_POST) anstatt:
PHP:
mail($email_to, $email_betreff, $emailbody, $header);

es so drin stehen:
PHP:
mail($_POST['email_to']['email_betreff']['emailbody']['header']);

Jetzt krieg ich zwar als Fehlermeldung beim Aufruf der Seite immernoch undefined indexes angezeigt, aber die Mail geht raus und kommt wie gewünscht an. Fehlerausgabe ist daher jetzt erstmal deaktiviert, und es läuft wieder wie es sollte.

Vielen vielen Dank an die Helfer! Alleine hätte ich mich noch ewig damit rumschlagen müssen. :D
 
Ich würde die display_errors so lange aktiviert lassen bis ich alle ERRORS und WARNINGS beseitigt hätte ...
 
Ich denke diese Meldung kommt weil ich die Arrays für "Name" und "Mail" am Anfang der Seite "auslesen" lasse, wenn sie noch gar nicht existent sind. Denn "Name" und "Mail" werden ja erst später gefüllt.
Ggf. gabs die Meldung auch schon vorher (also als das alte Script noch funktioniert hatte), nur da hab ich es nicht gesehen weil ich die Anzeige nicht angeschaltet hatte.

Letztendlich funktioniert das Script jetzt ja wieder. Klar, ist nicht perfekt und unter "normalen" Umständen würde ich das so auch nicht belassen, aber ich werde die Seite in Kürze wahrscheinlich eh komplett neu machen - bis dahin gehts auch noch so.
 
Zurück