Problem mit send_mail

Airis

Erfahrenes Mitglied
Hallo Zusammen,

ich stehe momentan vor einem Problem und sehe die Lösung nicht.

Ich habe ein Formular, mit dem sich ein User bestimmte Daten zuschicken lassen kann.
Da ich noch lokal arbeite funktioniert die Sache mit dem Mail natürlich noch nicht.
Allerdings wurde ich beim Testen bislang immer nach Eingabe einer Mail-Adresse zu der „danke.php“ weitergeleitet und es wurde eine Mitteilung angezeigt, das die Mail nicht lokal verschickt werden kann.
Bis hierhin, so denke ich, war alles ok.

Nun habe ich das Problem, dass das Formular nach Eingabe einer Mail-Adresse nicht mehr verarbeitet wird (es wird nicht mehr nach „danke.php“ weitergeleitet).

Ich poste hier mal mein Formular, in der Hoffung jemand sieht den Fehler oder kann mir sagen wie ich es richtig machen kann

PHP:
<?php
//========================
// daten.php
//========================
//error_reporting(E_ALL);
?>
 
<html>
<head>
</head>
<body>
 
<?php
//send_mail.php
if (!empty($empfaenger)) {
	 $sender = "Firma";
	 $sendermail = "xyz@abc.de";
	 $betreff = "Betreff";
	 $text = "text text text text";
	 $header = "From: \"".$sender."\" <".$sendermail.">\n";
	 mail($empfaenger, $betreff, $text, $header);
	 header ("Location:danke.php");
	 //echo "Mail erfolgreich gesendet!<BR><BR>";
}
else {
?>
 
		 <table border=0 align=center cellspacing=0 cellpadding=0 width="370">
				<tr>
				 <td align=center class="bmcatbg"><font face="Arial" size="6" color="#FFFFFF">Daten-Anforderung</font>
				 </td>
				</tr>
				<tr>
				 <td class=bm2><br><center><font face="Arial" size="2" color="#000000">
				 Hier können Sie Ihre Daten anfordern.<br>
				 Diese werden Ihnen automatisch gemailt.</font></center><br>
				 </td>
				</tr>
		 </table>
		 <table border=0 align=center cellspacing=0 cellpadding=0 width="370">
		 <form name=form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post">
			 <tr class=bm2>
				 <td align=center><font face="Arial" size="2" color="#000000">
				Ihre E-Mail Adresse:<BR>&nbsp;</font>
				 </td>
				 </tr>
		 </table>
		 <table border=0 align=center cellspacing=0 cellpadding=0 width="370">
			 <tr class=bm2>
				 <td align=right>
				 <center><input type="Text" name="empfaenger" size="30"></center>
				 </td>
			 </tr>
			 <tr class=bm2>
				<td>&nbsp;</td>
			 </tr>
			 <tr class=bm2>
				 <td align=right>
				 <center>
					 <input type="Submit" name="senden" value="Senden" class="bm5">
					</form>
				 </center>
				 </td>
				</tr>
		 </table>
	 <?PHP
		}
	 ?>
</body>
</html>
:
Viele Grüsse aus Frankreich
Airis
 
Hallo nochmal,


ich habe zwischenzeitlich festgestellt, daß das Script mit register_globals on
funktioniert.
Nun habe ich allerdings auf PHP 5 umgestellt und es funktioniert nicht mehr.

Kann mir jemand weiterhelfen?

Viele Grüsse aus Frankreich
Airis
 
Alle Variablen die irgendwie uebergeben werden musst Du aus den Arrays $_POST und $_GET holen. Je nachdem wie die Variablen uebergeben werden.
 
Dann stimmt meine Vermutung.
Du musst alle via Post oder Get übergebenen Variablen über die Superglobalen Arrays $_POST, $_GET, $_COOKIE aufrufen. $_REQUEST gilt für alle 3.

bau mal ein print_r($_REQUEST); in dein Skript ein, damit du die Struktur erkennen kannst.
 
Hallo reptiler,

besten Dank für Deine Anwort.
Jörg war einwenig schneller, es klappt nun.

Ein Lob an dieses Forum. Die Antworten sind so schnell und kompetent.

Danke nochmals und viele Grüsse aus Frankreich
Airis
 
Das print_r galt nur dazu, dir die Struktur zu veranschaulichen.
Wenn du das oben, also nach dem Formular abschicken einbaust, wird es noch plausibler.

Du musst jetzt alle übergeben Variablen "nacharbeiten".
Für den $empfaenger solltest du oben:
PHP:
$empfaenger = $_POST['empfaenger'];
einbauen.

Der Text wird später ja bestimmt auch per Post übergeben, dann dasselbe für die Text-Variable.
 
Hallo Jörg,

da ich nicht der Experte bin, muss ich nochmal dumm fragen:
Du musst jetzt alle übergeben Variablen "nacharbeiten".
Verstehe ich das so richtig:
PHP:
<?php
//send_mail.php
if (!empty($empfaenger)) {
	 $empfaenger = $_POST['empfaenger']; 
	 $betreff= $_POST['betreff']; 
	 $text= $_POST['text']; 
	 $header= $_POST['header']; 
 
	 $sender = "Firma";
	 $sendermail = "xyz@abc.de";
	 $betreff = "Betreff";
	 $text = "text text text text";
	 $header = "From: \"".$sender."\" <".$sendermail.">\n";
	 mail($empfaenger, $betreff, $text, $header);
	 header ("Location:danke.php");
	 //echo "Mail erfolgreich gesendet!<BR><BR>";
}
else {
?>

Viele Grüsse aus Frankreich
Airis
 
Zurück