PHP-Mailscript will einfach nicht funktionieren

preko

Erfahrenes Mitglied
Hi,

ich habe folgendes Mailscript aufgesetzt und versucht darüber Mails zu versenden, allerdings vergeblich. Es kommen einfach keine Mails an. Vielleicht hat irgendjemand eine Idee, was eventuell falsch ist.

Ja, ich habe die Suchfunktion bereits benutzt, aber nichts passendes gefunden. ;)

Hier nun der Code:

PHP:
<html>
	<head>
	</head>
	<body>
<?php
	if (isset($_POST['execute']) && ('true' == $_POST['execute'])) {
							$to="Info@Empfaenger.de";
							$anrede=$_POST['anrede'];
							$firma=$_POST['firma'];
							$vorname=$_POST['vorname'];
							$name=$_POST['name'];
							$email=$_POST['mail'];
							$telefon=$_POST['telefon'];
							$text=$_POST['text'];
							$subject="MailformularvonderWebseite";
							$headers  = "From: ".$email."\n";  
							$headers .= "MIME-Version: 1.0\n";  
							$headers .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";  
							$ip=getenv("REMOTE_ADDR");	
							mail($to,$subject,$text,$headers); 
							echo $to."<br />";
							echo $anrede."".$vorname."".$name."<br />";
							echo $firma."<br />";
							echo $email."<br />";
							echo $telefon."<br />";
							echo $text."<br />";
							echo "Betreff: ".$subject."<br />";
							echo $headers."<br />";
							echo $ip."<br />";
							die;
							}	
						?>

Dies ist der Rest der Seite, der aus HTML-Code besteht:

HTML:
<form action="<?php $_SERVER[PHP_SELF] ?>" method="post">
	<table width="100%" cellpadding="0" cellspacing="0" border="0">
		<tr>
			<td colspan="3"><input type="radio" name="anrede" value="Herr"> Herr <input type="radio" name="anrede" value="Frau"> Frau <input type="radio" name="anrede" value="Firma"> Firma</td>
		</tr>
		<tr>
			<td colspan="3"> <br /> </td>
		</tr>
		<tr>
			<td width="130">Firmenname</td>
			<td>:</td>
			<td><input type="text" name="firma" style="background-color:#FFCCFF;color:#993399;border:1px solid #993399;" size="41" maxlength="30"></td>
		</tr>
		<tr>
			<td colspan="3"> </td>
		</tr>		
		<tr>
			<td>Vor- &amp; Nachname</td>
			<td>:</td>
			<td><input type="text" name="vorname" style="background-color:#FFCCFF;color:#993399;border:1px solid #993399;" size="18" maxlength="30">  <input type="text" name="name" style="background-color:#FFCCFF;color:#993399;border:1px solid #993399;" size="18" maxlength="30"></td>
		</tr>
		<tr>
			<td colspan="3"> </td>
		</tr>
		<tr>
			<td>e-Mail</td>
			<td>:</td>
			<td><input type="text" name="mail" style="background-color:#FFCCFF;color:#993399;border:1px solid #993399;" size="41" maxlength="30"></td>
		</tr>
		<tr>
			<td colspan="3"> </td>
		</tr>
		<tr>
			<td>Telefon</td>
			<td>:</td>
			<td><input type="text" name="telefon" style="background-color:#FFCCFF;color:#993399;border:1px solid #993399;" size="41" maxlength="30"></td>
		</tr>
		<tr>
			<td colspan="3"> </td>
		</tr>
		<tr>
			<td>Ihre Nachricht</td>
			<td>:</td>
			<td><textarea name="text" cols="31" rows="5" style="background-color:#FFCCFF;color:#993399;"></textarea>
			<input type="hidden" name="execute" value="true">	
			</td>
		</tr>
		<tr>
			<td colspan="3" align="center"><p> </p></td>
		</tr>			
		<tr>
			<td colspan="3" align="center"><input name="Absenden" value="Absenden" type="submit">      <input name="Löschen" value="Löschen" type="reset"></td>
		</tr>	
	</table>
</form>
</body>
</html>

Beste Grüße,
preko
 
Moin,

hast du geguckt, ob auf dem Server, auf dem das Script läuft, ein SMTP Server läuft?
Ich weiss nicht, wo du die Scripte laufen lässt, aber bei ner Normalkonfiguration eines lokalen Webserver kannst du keine Mails versenden.

Hoffe, du kannst damit n bisschen was anfangen ;)
(Bitte nicht gleich schlagen, wenn ich was falsches gesagt habe :p )
 
da sind ja viele fehler ich habe einen ganz normalen mailer der so aussieht:

PHP:
<html>
<body>
<?php
$empfaenger="dragon90@web.de";
$betreff="Verbesserungsvorschlag";
$botschaft="Folgender Verbesserungsvorschlag wurde für Sie hinterlassen:\n\n";
/*************************************
Variablen setzen Ende!
*************************************/
foreach ($_POST as $name=> $value) {
$botschaft.="$name=$value\n";
}
if (isset($_POST["Mail"]) && $_POST["Mail"]!="") {
$absender=$_POST["Mail"];
if (mail($empfaenger, $betreff, $botschaft, "From: $absender")) {
echo "<p>Danke für ihren Beitrag, ihr Beitrag wird sofort bearbeitet</p>\n";
}
else {
echo "<p>Leider gab es einen Sendefehler bitte versuchen Sie es erneut.</p>";
}
}
else {
echo "Bitte geben sie Ihre E-mail adresse ein<br><br>";
}
?> 
</body>
</html>
also wie es bearbeitet wird:
als erstes wird der $empfäger eingegeben usw ist ja alles klar bis zur if abfrage.
in der If abfrage wird überprüft ob die Datei gesendet werden konnte.
oder nicht wenn es gesendet werden konnte ersheint die nachricht
Danke für ihren Beitrag, ihr Beitrag wird sofort bearbeitet
wenn nicht
Leider gab es einen Sendefehler bitte versuchen Sie es erneut.
ich weiß jetzt ja nicht was du fabriziert hast, aber ich glaube dz wolltest das die ganzen echo zeilen mit der Mail ankommen.
Natürlich geht das nicht;)
du musst den ganzen text in einer variable zusammenfassen und dann hier:
Code:
mail($to,$subject,$text,$headers);
als $text wieder ausgeben.
 
@dragon90:

die Echo Zeilen geben für den Benutzer nur aus, was er als Datenpaket verschickt hat, sozusagen als kleine "Sendebestätigung". ;)

Das eigentliche Mailversendescript besteht "nur" aus:
PHP:
...
                            $to="Info@Empfaenger.de"; 
                            $anrede=$_POST['anrede']; 
                            $firma=$_POST['firma']; 
                            $vorname=$_POST['vorname']; 
                            $name=$_POST['name']; 
                            $email=$_POST['mail']; 
                            $telefon=$_POST['telefon']; 
                            $text=$_POST['text']; 
                            $subject="MailformularvonderWebseite"; 
                            $headers  = "From: ".$email."\n";   
                            $headers .= "MIME-Version: 1.0\n";   
                            $headers .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";   
                            $ip=getenv("REMOTE_ADDR");     
                            mail($to,$subject,$text,$headers);  
...
Das Script läuft nicht lokal sondern auf einem Webhostingpaket, welches über Sendmail verfügt. Der Pfad ist auch Standard (ich glaube jetzt so aus dem Kopf heraus ../usr/sbin/sendmail...)

Daher sind die Rahmenbedingungen o.k. - habe es per phpinfo() geprüft.

Dein Script muß ich mir mal in Ruhe anschauen, werde mich dann wieder melden. :)

Vielen Dank erst einmal
und beste Grüße,
preko
 
Ich frage mich gerade am Rande, was Du mit den ganzen ausgelesenen Feldern machst, die Du nicht mit der Mail versendest, z.B. $anrede, $firma, usw.

Aber nun zu Deinem eigentlichen Anliegen, häng doch mal an die mail()-Funktion ein or die an, um zu sehen ob die mail-Funktion überhaupt erfolgreich ausgeführt wird.

PHP:
mail($to,$subject,$text,$headers)
  or die ("Leider trat ein Fehler aus. Die Mail konnte nicht versandt werden.");
 
@PuReSteeL :

Hatte ich vergessen zu erwähnen, dass die anderen Felder in "$text" zugewiesen werden. Dies hier ist nur eine "bereinigte" Fassung, da das Originalscript noch nicht fertig ist. ;)

Deinen Vorschlag werde ich mal ausprobieren und mich dann nochmals melden.

Vielen Dank und
beste grüße,
preko
 
Zurück