Php Mail mit 1und1 VServer

csigg

New Member
Hallo,
ich hab mir auf einen 1und1 VServer gemietet, um ein bisschen damit experimentieren zu können. Nun Hab ich in Plesk 8 einen Webspace angelegt.
Soweit funktioniert auch alles super, aber wenn ich jetzt ein kontaktformular ausführen will, geschieht garnix, es steht auch nix in den Error-Logs, hat jemand eine Idee?

Der Quellcode des Kontaktformulars:
PHP:
<?php @include "header.inc.php";?>

 <?
$empfaenger = "email@web.de";
$betreff = "Kontaktformular";
$webSiteTitel = "Kontaktformular";
$fehleradresse = "email@web.de";
$ueberschrift = "Kontaktformular";
$ormularueberschrift = "Nutzen sie das Formular.";
$textfeldUeberschrift = "Geben sie hier ihr Anliegen ein:";
$namensfeldUeberschrift = "Ihr Name:";
$eMailfeldUeberschrift = "Ihre eMailadresse";
$fehlerhafteEMailangabe = "Bitte korrigieren sie die Adresse!";
$sendeButton = "abschicken!";
$loeschButton = "nochmal neu!";
$versendenErfolgreich = "Vielen Dank";
$cssDatei = "def_datei.css";


$umg_ref = getenv(HTTP_REFERER);
$umg_bro = getenv(HTTP_USER_AGENT);
$umg_zeit = date("l  j. F Y - G.i.s");


$absender = $email;




//Funktion zum zusammenstellen des Inhaltes
//Dies wird das eMail sein, was sie zugeschickt bekommen

function inhaltformat($umg_ref,$umg_bro,$umg_zeit,$absender,$name,$text)
         {
		 $inhalt  =  "$name mit dieser eMailadresse: $absender\n";
		 $inhalt .= "hat folgende Nachricht abgeschickt:\n";
		 $inhalt .=  $text."\n";
		 $inhalt .= "*************Umgebung***************\n";
		 $inhalt .=  $umg_ref."\n";
		 $inhalt .=  $umg_bro."\n";
		 $inhalt .=  $umg_zeit."\n";
		 return $inhalt;
		 }

//Das eMail mit passendem Inhalt verschicken

function verschicken($inhalt,$empfaenger,$absender,$betreff)
		 {
		 $kopf = "From: $absender\nReply-To:$absender\nX-Mailer:FormFix1.1.0";
		 mail($empfaenger, "Kontaktformular", $inhalt, $kopf);
		 //printf ("<p>Nachricht erfolgreich verschickt!<p>");
		 }

//Das Script hört vorläufig auf


//////////////
//Dies ist ihre Seite mit dem Formular. Weitere Header Informationen können sie von Hand einfügen
//////////////



//////////////
//Das Script wird 2x durchlaufen, vor dem abschicken und nach dem abschicken.
//Vorausgesetzt, der 1. Durchlauf war erfolgreich, beginnen wir hier mit dem Script
//Die eMail Adresse wird auf ihre Richtigkeit geprüft
//////////////

    $korr_em = ereg("^([_a-zA-Z0-9-]+)(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email);
//Eine Textvariable
    $var_text = $text;

//Falls die eMail ADresse falsch ist, soll auch der Text ungültig werden
    if  ($email AND !$korr_em) $var_text = false;
//Eine if Abfrage klärt, ob das Formular bereits bearbeitet und abgeschickt wurde (Entweder Text oder eMail plus Los Button
    if  ($los AND ($var_text OR ($email AND $korr_em)))
	   {
//Wenn ja, dann wird der Inhalt formatiert und abgeschickt
				   $inhalt = inhaltformat ($umg_ref,$umg_bro,$umg_zeit,$absender,$name,$text);
				   verschicken ($inhalt,$empfaenger,$absender,$betreff);
//Einschub der HTML Ausgabe, die der Benutzer als Bestätigung sehen wird.
?>
  				   <h2>Ihre Nachricht</h2>
  				   <p> <?echo $name?>:<br>
                    <? echo "$text<br>";
?>
					<p>eMailadresse:<br>
                    <? echo "$email <br>";?>

                    <? echo "<p>";
                       echo $versendenErfolgreich;

//Ende der ersten Bedingung, das Script geht weiter
				   }


			else
				{
//////////////
//Wenn das Formular zum ersten Mal aufgerufen wird, kommt dieser Teil dran
//...oder wenn ein Fehler in der eMail Adresse aufgetaucht ist
//////////////

?>
                <h1><? echo $ueberschrift ?></h>
  				<p>
		   	  <form method="post" action="<?echo $PHP_SELF?>">
			  <p><? echo $textfeldUeberschrift ?><br>

    		   <textarea name="text" cols="40" rows="5"><?echo $text?></textarea><p>

			   <? echo $namensfeldUeberschrift ?><br>
			   <input type="text" name="name" value="<?echo $name?>"><p>

			   <? echo  $eMailfeldUeberschrift ?><br>

<?//Falls die Adresse falsch ist...
//..wäre es gleichzeitig auch ärgerlich, wenn der alte Text weg wäre...

		 	   if ($email AND !$korr_em)
		 	   	  		  {
						  echo "<h5>";
						  echo $fehlerhafteEMailangabe ;
						  echo "</h5>";
						  }
?>
			   <input type="text" name="email" value="<?echo $email?>" ><p>
			   		    <input type="submit" value="<? echo $sendeButton ?>" name="los">
                        <input type="reset" value="<? echo $loeschButton ?>">
				  </form>

				<p>Fehler? Bitte melden an <a href="mailto:<? echo $fehleradresse ?>"><? echo $fehleradresse ?></a>
<?
			}
?>

<?php @include "footer.inc.php";?>
 
Was heißt es passiert nichts?

Du hast keinen Eintrag über den (versuchten) Aufruf in den Logfiles? Die Seite bleibt weiß? Dir wird der Quellcode ausgegeben? Wie hast du versucht das Ding aufzurufen? Funktionieren andere Seiten?
 
ok, das war wohl zuwenig info.

alsoin den mail-logfiles stht nix drin.
Wenn ich auf absenden klicke, wird der inhalt einfach gelöscht,
normal müsste ja dran stehn dass die nachricht verschickt wurde, und es kommt auch keine an.

Also auf anderen Websites funktioniert das Script ohne Probleme. Andere Scripts funktionieren auf dem Webserver auch ohne Probleme, also MySQL-Abfragen,...
 
Was ist bei dir in der php.ini als sendmail_path angegeben.
safe_mod an oder aus?

Errorlog vom Apache?

Gruß
Daniel
 
Ich hab mir das Script nicht gänzlich angeschaut, aber werden die Inhalte nochmal auf escape-chars geprüft? Meine Glaskugel sieht schon einen neuen Thread aufgehen...!
 
im Errorlog vom Apache wird dazu nix geschrieben.
SafeMode war auf ON, auch das ändern auf Off hat nix gebracht.

hab allerdings grad gesehn dass kein sendmail_path eingetragen ist.
kann ich den von Plesk aus konfigurieren?
bzw. kann mir jemand sagen wie ich den herausbekomm??
 
Die Zeile drüber lesen!
Wenn nix Eingetragen ist nimmer er sendmail -i -t.
Spricht das müsste gehen. Ist denn der SMTP Service an? Bzw. stauen sich die mail im Query?

1. Plesk -> Server -> Dienstverwaltung -> Qmail (Schauen ob da auf gelb + rot steht)

2. Plesk -> Server -> Email -> Warteschlange -> Prüfen (Unten stehen alle mails die noch im Query sind).

Gruß
Daniel
 
Habs bei mir mal getestet. Wie Mario geschreiben hat: /usr/sbin/sendmail -t -i
Und dann geht er bei mir auch.
Hatte ihn abgestellt wegen den Spam Mails.
 
also der SMTP-Dienst läuft, die warteschlange ist leer.
Der Befehl which sendmail bringt bei mir
/usr/sbin/sendmail

hat sonst noch jemand ne idee an was es liegen kann??
 
ups, da hab ich euch wohl falsch verstanden....
hab grad ausprobiert, geht genauso wenig.

ich hab solangsam das gefühl dass ich irgendwas ganz triviales einfach übersehen habe.
 
hab noch ein bisschen rumprobiert,
einmal Register_Globals auf ON gesetzt und schon liefs... *g*

viele dank für eure ausführliche Hilfe!!!!
 
einmal Register_Globals auf ON gesetzt und schon liefs... *g*

Und schon haben wir den nächsten Spam php mail Script im Netz. Super!

Such dir leiber nen neuen Script und mach die Globals Off.

Danke Gruß Daniel
 
$absender = $email;
Gegen Register-Globals ist nix zu sagen, wenn man die Variablen vernünftig überprüft. Das geschied hier aber nicht.
Nur so als Tipp: Was meinst Du was passiert, wenn jemand die Variable $email mit folgendem Text (inkl. Zeilenumbruch) füll?
Code:
ich@spammer.de
BCC: spamempfaenger1@gmx.de,spamempfaenger2@gmx.de,spamempfaenger3@gmx.de
Jetzt muß dieser jemand die Variable $text mit einem netten Spamtext füllen und Du fragst das nächste mal: "Warum werden meine Emails nicht abgearbeitet? Und warum habe ich über 200 Qmails am laufen? Und warum ist meine CPU-Last bei 100%?"

Aber wir sind hier ein Forum, welches Hilfe bringt. Daher nimm diese Zeile:
Code:
list($absender) = explode("\n", $email);
Das ist zwar nicht ausreichend, aber erstmal hinreichend gegen groben Unfug.

huschi.
 
Für was der ganze Umstand?
Mach die register_globals wieder auf off und schreibe die paar Variablen im Script einfach um:
z.B.:
$text ist jetzt $_POST['text']
$email ist jetzt $_POST['email]

Ich verstehe nicht, wieso man einem Anfänger (nicht als Beleidigung werten) nicht dringlichst dazu rät die register_globals abzuschalten und lieber ein paar Variablen umzuschreiben.
Das Überschreiben von Variablen kann doch einen sehr unerfreulichen Effekt haben.

P.S.: Wenn du die Absender-Adresse prüfen willst, dann kannst du sie einfach mit einer der sicherlich 200 im Netz frei verfügbaren Funktionen überprüfen. Theoretisch kannst du die Mail auch über eine schon vorgegebene Adresse schicken und dann in die Mail einfügen, von wem sie eigentlich kommt. Dann vermeidest du auch die Geschichte mit dem BCC
 
Last edited by a moderator:
Back
Top