423 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von

Hi , ich muss für unsere Abschlussklasse eine Website konfigurieren, wo sie interviewfragen für andere Schüler abgeben können. ich wollte mir die Formulare die sie dann ausfüllen lassen per php form-mailer auf meine Email verschicken lassen, jedoch scheitert es immer am php skript. Was genau mach ich falsch?

mail.php:

<?php

$mailTo = '---@---.de';

$mailFrom = '"FormMailer" <-----@---.de>';

$mailSubject    = 'Frage';

$returnPage = 'http:/-----/sent.html';

$returnErrorPage = 'http://----/error.html';

$mailText = "";

if(isset($_POST)) { 

   

   foreach($_POST as $name => $value) {

      

      

      if(is_array($value)) {

          

          $mailText .= $name . ":\n";

          

          foreach($valueArray as $entry) {

              

             

             $mailText .= "   " . $value . "\n";

          }

      } 

      

      else {

          

          $mailText .= $name . ": " . $value . "\n";

      } 

   } 

 if(get_magic_quotes_gpc()) {

     

     $mailtext = stripslashes($mailtext);

 }

$mailSent = @mail($mailTo$mailSubject$mailText"From: ".$mailFrom);

if($mailSent == TRUE) {

   

   header("Location: " . $returnPage);

}

else {

   

   header("Location: " . $returnErrorPage);

}

exit();

?>

 

ich hoffe ihr könnt mir weiterhelfen

8 Antworten

0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Bearbeitet von computerschrat
Hallo Manuel,

ist auf dem Server, auf dem die Webseite läuft denn ein Mailserver installiert? Wie zeigt sich die Fehlfunktion, gibt es eine Fehlermeldung?

Außerdem fehlt in der Zeile mit der Deklaration von $returnPage ein /, aber das ist wahrscheinlich nur ein Tippfehler beim Übertragen hier ins SN gewesen.

Gruß computerschrat
0 Punkte
Beantwortet von
Hallo Computerschrat,
Ehrlich gesagt kann ich dir das nicht so genau beantworten. Ich habe meine HTML Kenntnisse wieder ausgegraben weil ich keine Website gefunden hab die mir meine gewünschte Anforderung erfüllt. Im Moment lasse ich meine Website rein auf html Mithilfe der Seite postmail invotes laufen. Das funktioniert auch Problemlos, jedoch sind die Emails auf 25 pro Tag begrenzt, was bei 55 Schülern definitiv zu wenig ist. Im Internet hatte ich mich dann über die Php Variante schlau gemacht. Da die Seite maximal einen Monat online sein soll wollte ich möglichst kein Geld dafür ausgeben und hab deshalb die Seite Netlify als Host genommen. Jetzt kann es natürlich sein, dass der Host das Problem ist und nicht der Code. Ja ich habe vor dem abschicken des Skripts noch paar Details verändert, da dort zum Beispiel meine private Email stand.
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo Manuel,

Ok, wenn du grundsätzlich Mails vom Server versenden kannst, sollte das zumindest in der Testphase noch kein Problem sein. Was passiert denn, wenn du auf Mail senden gehst? Gibt es eine Meldung, oder kommt einfach nur die von dir definierte Webseite mit der Fehlermeldung zurück?

Mit ist noch aufgefallen, dass beim Absender  $mailFrom ein Zeilenvorschub am Ende fehlt, der ist unbedingt erforderlich.

Gruß computerschrat
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Bearbeitet von computerschrat

Dann noch eine Überlegung:

Die Abfrage, ob die Mail versandt werden konnte wird nicht so funktionieren. Wenn der Empfänger nicht erreichbar, oder sein Postfach voll ist wird der Versand der Mail ja eine Weile erneut versucht und irgendwann später kommt die Fehlermeldung zurück. Ich weiß nicht, welchen Status die PHP Funktion mail() zurückgibt.

Gruß computerschrat

edit: Ich sehe gerade, dass die Rückmeldung nur sagt, ob die Mail erfolgreich an den Server abgegeben werden konnt. Mit dem erfolgreichen Versand hat es nichts zu tun. Siehe hier:

https://www.php.net/manual/de/function.mail.php

Aber vielleicht muss der @ vor mail() weg, dann siehst du eventuell, wo das Problem liegt.

0 Punkte
Beantwortet von
Hallo Computerschrat,
Da ich gerade nicht mehr vor dem Computer bin kann ich dir die Fragen grad nur aus dem Gedächtnis beantworten. Bei meinen Tests hat die Seite mir am Anfang nur das Skript als Code wieder ausgespuckt und dann beim Host eine Fehlermeldung. Die Änderungen am Skript kann ich wahrscheinlich morgen erst vornehmen.
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo Manuel,

wenn einfach nur der Text des Scripts ausgegeben wurde, dann wurde offenbar nicht erkannt, dass hier ein Script vorliegt und der gesamte Code wird als Text interpretiert. Eventuell wird das öffnende <?php nicht erkannt, weil ein HTML Kommentar davor steht? Oder ist auf dem Rechner überhaupt kein PHP installiert?

Was bezweckst du mit dem mail.php: am Anfang?

Gruß computerschrat
0 Punkte
Beantwortet von
Hallo Computerschrat,
Das mail.php: am Anfang soll nur auf den Beginn des Skripts und dessen Namen hinweisen. Es ist kein Teil des eigentlichen Skripts. Wie meinst du das mit dem HTML Kommentar? Mit dem php installieren kann es gut sein dass ich es nicht getan habe, bin davon ausgegangen dass alleiniges codieren und definieren als php Datei ausreicht. Bin da noch ein Anfänger.
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo Manuel,

mit dem Kommentar meinte ich, dass die Zeile <?php möglicherweise per Kommentarzeichen <!-- ausgeblendet war, dann würde natürlich der folgende Code nicht als PHP erkannt und interpretiert. Mir scheint es aber wahrscheinlicher, dass PHP überhaupt nicht auf dem Rechner installiert ist. Dann kann der Code nicht ausgeführt werden.

Gruß computerschrat
...