Mail's kommen nicht an mit der Funktion mail();

Akcsyndrom

Mitglied
Hallo Leute!

Ich bin eben dabei PHP zu lernen.
Ich habe ein einfaches Formular geschrieben in dem es mal darum geht einfach den Namen und die PLZ beim Absenden an mein Mail zu schicken!
Leider kommen die Mail's nicht an, und der Zähler von http://spacequadrat.de/ zählt aber mit!
Könnt ihr mir sagen ob der Script ev. Fehler aufweist?
Oder was genau der Grund ist, warum die Mails nicht ankommen?

http://test.irep.spacequadrat.de/test3.php

Danke!

PHP:
<?php

$vorname = $_GET['vorname'];
$dg =$_GET['dg'];
$postleitzahl = $_GET['anzahl'];
if ( empty($vorname) or empty($postleitzahl) )
{
	if (empty ($vorname))
	{
		if ($dg == "ja")
		{
			echo "<p>Bitte Vorname eingeben</p>";
		}
	}
	echo "<form action=\"test3.php\" method=\"get\" >";
	echo "<p>Ihr Vorname:*</p>";
	echo "<input name=\"vorname\" type=\"text\" value=\"$vorname\" <br/>";
			if (empty ($postleitzahl) and $dg == "ja")
					   {
						   echo "<p>Postleitzahl eintragen</p>";
					   }
				   
	echo "<p>Postleitzahl:*</p>";
	echo "<input name=\"anzahl\" type=\"text\" value\"$anzahl\" <br/>";
	echo "<input name=\"senden\" type=\"submit\" />";
	echo "<input type=\"hidden\" name=\"dg\" value=\"ja\" />";
	echo "</form>";
}
else
{
	echo "<p>Vielen Dank!</p>";
	echo "<strong><p>Danke es wurde die Postleitzahl: $postleitzahl in verbindung mit dem Namen: $vorname gespeichert!</p></strong>";
	mail("dean.aeli@gmail.com",$vorname,$postleitzahl);
}


?>
 
Zuletzt bearbeitet:
Zum Debuggen gehört als allererstes einmal, irrelevantes wegzulassen. Und dazu gehört in deinem Script jede einzelne Zeile abgesehen von der letzten. Füg ein echo vor den Mailbefehl und überprüf, was es ausgibt.
 
Lies dir mal das durch:
mail();

Hinweis: Um eine E-Mail zu senden, muss die E-Mail einen From-Header enthalten. Dies kann entweder durch Setzen eines additional_headers -Parameters oder durch Setzen eines Standardwertes in der php.ini geschehen.
Falls dies nicht geschieht, wird eine Fehlermeldung ähnlich wie Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing ausgegeben. Der From: Header setzt unter Windows auch den Return-Path: Header.

Ausserdem weißt du ob dein Anbieter es erlaubt eMails zu senden?
 
Das mit der Inrelevanz hab ich nun nich ganz verstanden, sorry!
Bin teilweise bischen schwer von Begriff :-P
http://test.irep.spacequadrat.de/test3.php

PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>  
<?php

$vorname = $_GET['vorname'];
$dg =$_GET['dg'];
$postleitzahl = $_GET['anzahl'];
if ( empty($vorname) or empty($postleitzahl) )
{
	if (empty ($vorname))
	{
		if ($dg == "ja")
		{
			echo "<p>Bitte Vorname eingeben</p>";
		}
	}
	echo "<form action=\"test3.php\" method=\"get\" >";
	echo "<p>Ihr Vorname:*</p>";
	echo "<input name=\"vorname\" type=\"text\" value=\"$vorname\" <br/>";
			if (empty ($postleitzahl) and $dg == "ja")
					   {
						   echo "<p>Postleitzahl eintragen</p>";
					   }
				   
	echo "<p>Postleitzahl:*</p>";
	echo "<input name=\"anzahl\" type=\"text\" value\"$postleitzahl\" <br/>";
	echo "<input name=\"senden\" type=\"submit\" />";
	echo "<input type=\"hidden\" name=\"dg\" value=\"ja\" />";
	echo "</form>";
}
else
{
	echo "<p>Vielen Dank!</p>";
	echo "<strong><p>Danke es wurde die Postleitzahl: $postleitzahl in verbindung mit dem Namen: $vorname gespeichert!</p></strong>";
	echo mail("dean.aeli@gmail.com",$vorname,$postleitzahl);
}


?>

Ausserdem weißt du ob dein Anbieter es erlaubt eMails zu senden?

Jup er erlaupt es, aber ich peils immernoch nicht, heisst das ich muss zuersst z.b x-mailer auf dem hoster installieren?

http://www.youtube.com/watch?v=mPwMUI1cs4w

der hats ja genau gleich wie ich ?
ausser das ich hald noch die if und else drinnen habe das man auch alle felder ausfüllt!
 
Das mit der Inrelevanz hab ich nun nich ganz verstanden, sorry!
Bin teilweise bischen schwer von Begriff :-P

Das heißt du sollst alles was nicht nötig ist rausschmeißen, und dann Debuggen. Zum Beispiel nicht nötig sind Ausgaben per echo etc.

Erstmal sollst du vor mail() ein echo schreiben um zu schauen ob überhaupt eine eMail gesendet wird. Was du auch noch machen kannst deine Parameter für mail() ausgeben, vllt lief da was schief!

Der X-Mailer sollte eigentlich dabei sein, wenn ich mich nicht irre!
 
Das heißt du sollst alles was nicht nötig ist rausschmeißen, und dann Debuggen. Zum Beispiel nicht nötig sind Ausgaben per echo etc.

Erstmal sollst du vor mail() ein echo schreiben um zu schauen ob überhaupt eine eMail gesendet wird. Was du auch noch machen kannst deine Parameter für mail() ausgeben, vllt lief da was schief!

Der X-Mailer sollte eigentlich dabei sein, wenn ich mich nicht irre!

Erstmal Danke zer0 für deine Geduld!

Wenn ich doch alle ''echo's'' rausschmeisse, dann wird mir doch die tabelle rsp. das formular nicht mehr angezeigt?
Irgendwie stehe ich gerrade komplett auf dem Schlauch ! das echo vor dem mail(); habe ich ja gesetzt, kommt aber nix bei raus? rsp. bleibt alles gleich?

Script:
PHP:
	<?php
	error_reporting(E_ALL);
	ini_set('display_errors', 1);
	?>  
	<?php
	
	$vorname = $_GET['vorname'];
	$dg =$_GET['dg'];
	$postleitzahl = $_GET['anzahl'];
	if ( empty($vorname) or empty($postleitzahl) )
	{
		if (empty ($vorname))
		{
			if ($dg == "ja")
			{
				echo "<p>Bitte Vorname eingeben</p>";
			}
		}
		echo "<form action=\"test3.php\" method=\"get\" >";
		echo "<p>Ihr Vorname:*</p>";
		echo "<input name=\"vorname\" type=\"text\" value=\"$vorname\" <br/>";
				if (empty ($postleitzahl) and $dg == "ja")
						   {
							   echo "<p>Postleitzahl eintragen</p>";
						   }
					   
		echo "<p>Postleitzahl:*</p>";
		echo "<input name=\"anzahl\" type=\"text\" value\"$postleitzahl\" <br/>";
		echo "<input name=\"senden\" type=\"submit\" />";
		echo "<input type=\"hidden\" name=\"dg\" value=\"ja\" />";
		echo "</form>";
	}
	else
	{
		echo "<p>Vielen Dank!</p>";
		echo "<strong><p>Danke es wurde die Postleitzahl: $postleitzahl in verbindung mit dem Namen: $vorname gespeichert!</p></strong>";
		echo mail("dean.aeli@gmail.com",$vorname,$postleitzahl);
	}
	
	
	?>
 
Wenn ich doch alle ''echo's'' rausschmeisse, dann wird mir doch die tabelle rsp. das formular nicht mehr angezeigt?
Dann kommentierst du den Rest eben aus. Oder du erstellst eine separate Datei. Es geht um Komplexitätsreduktion – denn je einfacher der Code ist, in dem ein Fehler auftritt, desto schneller findest du auch den Fehler. Der ganze Code vor der Mailanweisung hat mit deinem Problem überhaupt nichts zu tun, der stört nur beim Debuggen.

Daher: Erstell am besten eine neue Datei mit nur einer Anweisung, nämlich einem [phpf]mail[/phpf]. Dort kannst du dann herumtüfteln, warum es nicht funktioniert.

Irgendwie stehe ich gerrade komplett auf dem Schlauch ! das echo vor dem mail(); habe ich ja gesetzt, kommt aber nix bei raus? rsp. bleibt alles gleich?
Das bedeutet, dass entweder $vorname oder $postleitzahl leer ist und darum dein Mailbefehl gar nie ausgeführt wird.
 
Dann kommentierst du den Rest eben aus. Oder du erstellst eine separate Datei. Es geht um Komplexitätsreduktion – denn je einfacher der Code ist, in dem ein Fehler auftritt, desto schneller findest du auch den Fehler. Der ganze Code vor der Mailanweisung hat mit deinem Problem überhaupt nichts zu tun, der stört nur beim Debuggen.

Daher: Erstell am besten eine neue Datei mit nur einer Anweisung, nämlich einem [phpf]mail[/phpf]. Dort kannst du dann herumtüfteln, warum es nicht funktioniert.


Das bedeutet, dass entweder $vorname oder $postleitzahl leer ist und darum dein Mailbefehl gar nie ausgeführt wird.

Allso ne Datei ind er einfach steht:

PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>  
<?php
echo mail ("dean.aeli@gmail.com,"Betreff", "testmail")
?>
 
Ich würde es eher mal mit

PHP:
var_dump(mail("dean.aeli@gmail.com","Betreff", "testmail", "From: email@example.org"));

versuchen. Bei echo würde ich jetzt nicht unbedingt erwarten, dass er mir was ausgibt. Da sollte dann sowas wie true oder false rauskommen.
 
Ich würde es eher mal mit

PHP:
var_dump(mail("dean.aeli@gmail.com","Betreff", "testmail", "From: email@example.org"));

versuchen. Bei echo würde ich jetzt nicht unbedingt erwarten, dass er mir was ausgibt. Da sollte dann sowas wie true oder false rauskommen.

allso ich mach nun ne php datei mit dem coode :
PHP:
var_dump(mail("dean.aeli@gmail.com","Betreff", "testmail", "From: email@example.org"));
und dann mach ich das online und ruffe es ab ; ergebniss erfolgt gleich ..!
 
Zurück