Mail schicken via PHP?

  • Themenstarter Themenstarter Alex363
  • Beginndatum Beginndatum
Also bei mir gibt es keinen Fehler! Aber vielleicht hast du ja noch andere Dateien eingebunden?

Parse error: syntax error, unexpected T_STRING in /var/www/users/krizz/sendmail.php on line 1

Das bedeutet, dass in der Zeile 1 der Datei /var/www/users/krizz/sendmail.php ein Syntaxfehler (= Parse error) aufgetreten ist. "unexpected T_STRING" bedeutet, dass der Fehler ein unerwarteter String ist (warscheinlich hast du irgendein Zeichen vergessen, z.B. bei einem Funktionsaufruf ein Komma vor dem zweiten Parameter).
PHP:
function1("test", "foo" "bar");
Das würde einen solchen Fehler geben, weil die Parameter "foo" und "bar" nicht durch ein Komma voneinander getrennt sind. "bar" wäre dann der "unerwartete String"!
 
Mhm, der Fehler bleibt :mad:

Meine sendmail.php schaut so aus:
PHP:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<?php

/**
 * Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
 * ansonsten wird 0 zurückgegeben.
 */
function checkmail($mail) {
   return preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]\.[a-z]++$#i', $mail);
}

// Empfänger
$empf = "alex1110@aol.com";

// Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
   die("Bitte einen Betreff eingeben!");

// Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
   die("Bitte eine Nachricht eingeben!");

// Wenn Email ungültig ist, Fehler!
if(!checkmail($_POST["email"]))
   die("Bitte eine g&uuml;ltige Emailadresse angeben!");

// mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
mail($empf, str_replace("\n", "", $_POST["betreff"]), str_replace("\n.", "\n..", $_POST["message"]), $_POST["email"]);

?>
<html>
<body>
<form action="sendmail.php" method="POST"><p></p><center>
   E-Mail: <input type="text" name="email"><br/><p></p>
   Betreff: <input type="text" name="betreff"><br/><p></p>
   <center>Nachricht:</center><p></p><center> <textarea name="message" rows="10" cols="50"></textarea><br/><p></p>
   <input type="submit" value="abschicken"></form>
</body>
</html>


Und diesen Code habe ich in eine html-Seite kopiert in der ich noch ein Bild verlinkt habe.

PHP:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
		<meta name="generator" content="Adobe GoLive" />
		<title>---</title>
	</head>

	<body bgcolor="#ffffff">
		<p align="center"><img src="headcontent_kontakt.gif" alt="" height="72" width="286" border="0" /><br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<?php

/**
 * Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
 * ansonsten wird 0 zurückgegeben.
 */
function checkmail($mail) {
   return preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]\.[a-z]++$#i', $mail);
}

// Empfänger
$empf = "alex1110@aol.com";

// Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
   die("Bitte einen Betreff eingeben!");

// Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
   die("Bitte eine Nachricht eingeben!");

// Wenn Email ungültig ist, Fehler!
if(!checkmail($_POST["email"]))
   die("Bitte eine g&uuml;ltige Emailadresse angeben!");

// mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
mail($empf, str_replace("\n", "", $_POST["betreff"]), str_replace("\n.", "\n..", $_POST["message"]), $_POST["email"]);

?>
<html>
<body>
<form action="sendmail.php" method="POST"><p></p><center>
   E-Mail: <input type="text" name="email"><br/><p></p>
   Betreff: <input type="text" name="betreff"><br/><p></p>
   <center>Nachricht:</center><p></p><center> <textarea name="message" rows="10" cols="50"></textarea><br/><p></p>
   <input type="submit" value="abschicken"></form>
</body>
</html>
</body>
</html>
 
Wie die Fehlermeldung bereits sagt, liegt das Problem in Zeile 1!

Der <?xml ... ?>-Tag wird als PHP interpretiert (wegen dem <?). Lass ihn weg und es geht!
 
Da deine Funktion zum überprüfen der Mail ja Integer zurück gibt und nicht Boolean, müsste es eigentlich heißen:
PHP:
if(checkmail($_POST["email"]) == 0) {
  die("Bitte eine g&uuml;ltige Emailadresse angeben!"); 
}

Oder hab ich mal wieder einen Denkfehler?
 
Da deine Funktion zum überprüfen der Mail ja Integer zurück gibt und nicht Boolean, müsste es eigentlich heißen:
PHP:
if(checkmail($_POST["email"]) == 0) {
  die("Bitte eine g&uuml;ltige Emailadresse angeben!"); 
}

Oder hab ich mal wieder einen Denkfehler?

Da PHP dynamisch getypt ist, entspricht eine 0 dem boolschen Wert false.
Also ergibt checkmail(...) == 0 das Selbe wie !checkmail(...)!

Im regulären Ausdruck war ein Plus zuviel, das hab ich jetzt entfernt... Wenn es jetzt nicht geht, dann fang ich an, an mir selbst zu zweifeln ;-)
 
Kannst du dir bitte mein Script nochmal ansehen, es klappt nämlich immer noch nicht.

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
		<meta name="generator" content="Adobe GoLive" />
		<title>---</title>
	</head>

	<body bgcolor="#ffffff">
		<p align="center"><img src="headcontent_kontakt.gif" alt="" height="72" width="286" border="0" /><br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<?php

/**
 * Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
 * ansonsten wird 0 zurückgegeben.
 */
function checkmail($mail) {
   return preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]\.[a-z]++$#i', $mail);
}

// Empfänger
$empf = "alex1011@aol.com";

// Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
   die("Bitte einen Betreff eingeben!");

// Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
   die("Bitte eine Nachricht eingeben!");

// Wenn Email ungültig ist, Fehler!
if(!isset($_POST["email"]) ||!checkmail($_POST["email"]))
   die("Bitte eine g&uuml;ltige Emailadresse angeben!");

// mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
mail($empf, str_replace("\n", "", $_POST["betreff"]), str_replace("\n.", "\n..", $_POST["message"]), $_POST["email"]);

?>
<html>
<body>
<form action="sendmail.php" method="POST"><p></p><center>
   E-Mail: <input type="text" name="email"><br/><p></p>
   Betreff: <input type="text" name="betreff"><br/><p></p>
   <center>Nachricht:</center><p></p><center> <textarea name="message" rows="10" cols="50"></textarea><br/><p></p>
   <input type="submit" value="abschicken"></form>
</body>
</html>
</body>
</html>

Könnte es darin liegen, das ich die sendmail.php noch in meinem Webverzeichnis habe?
In Prinzip brauche ich ja nur die kontakt.html, in der dieser php-code drin ist, oder?
 
Ich vermute dein Script scheint doch zu funktionieren, der Fehler liegt beim Provider der diese PHP Mailfunktion deaktiviert hat. Muss mich wohl nach einem anderen Hoster umsehen. Danke aber für die Hilfe.:)
 
Zurück