Kontaktformular HTML per PHP an E-Mail versenden?

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

XirLion

Neues Mitglied
4 April 2020
17
0
1
30
Hallo ich habe per HTML ein Kontaktformular erstellt und möchte dieses per PHP an meine E-Mail Adresse senden lassen.

Leider Zeigt mein Server immer den Fehler das Formular kann nicht ausgewertet werden Error 500 oder eine komplett weiße Seite jetzt, kann mir jemand von euch helfen, kenne mich mit PHP nicht aus.
Habe anhand von paar Suchergebnissen versucht die PHP Formel zu erstellen, doch klappt diese nicht :(

mein HTML Formular:

HTML:
<form  action="formulartest.php" method="post">

                            <ol>

                            <li><input id="name" type="text" name="name" placeholder="Vor und Nachname *" required size="30"></li>

                            <li><input id="addresse" type="text" name="straße" placeholder="Straße und Hausnummer *" required><br></li>

                            <li><input id="plz" type="text" name="plz" placeholder="PLZ *" required>&nbsp;&nbsp;

                                <input id="stadt" type="text" name="ort" placeholder="Ort *" required></li>

                            <li><input id="telefon" type="text" name="telefon" placeholder="Telefon *" required></li>

                            <li><input id="email" type="text" name="email" placeholder="E-Mail Adresse *" required size="30"></li>

                            </ol>

                            <!--RangeDatePicker-->

                            <p>Reisezeitraum:</p>

                            <input id="daterange" type="text" name="daterange" value="01/01/2019 - 01/31/2050"/>

                            <table id="kontaktoption">

                                <tr>

                                    <th class="sp1">Erw.:</th>

                                    <th class="sp1-1">

                                        <select type="text" name="Erw">

                                        <option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option>

                                        <option value="5">5</option><option value="6">6</option>

                                        </select>

                                    </th>

                                    <th class="sp2">Kinder:</th>

                                    <th class="sp1-1">

                                        <select type="text" name="Kinder">

                                        <option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option>

                                        <option value="5">5</option><option value="6">6</option>

                                        </select>

                                    </th>

                                </tr>

                        </table>

                    

                        <p>

                            <textarea id="nachricht" name ="message" placeholder="Ihre Nachricht. . . " required></textarea>

                        </p>

                        <p class="datenschutzscheck">

                            <input type="checkbox" name="datenschutz" value="Datenschutz" required>

                            Mit dem Absenden des Formulars erklären Sie sich damit

                            einverstanden, dass ich Ihre Daten zur Bearbeitung der

                            Anfrage verwenden darf.<br>

                            <br>

                            Weitere Informationen können Sie unter <a href="datenschutz.html">Datenschutz</a> nachlesen.

                        </p>

                        <br>

                        <input id="Senden" type="submit" name="senden" value="Nachricht senden"/>

                    </form>


Und mein bisheriger PHP Code welcher nicht funktioniert:


<?php
if(isset($_POST['submit'])){
$name = $_POST['name'];
$straße = $_POST['straße'];
$plz = $_POST['plz'];
$stadt = $_POST['stadt'];
$telefon = $_POST['telefon'];
$mailFrom = $_POST['email'];
$daterange = $_POST['daterange'];
$Erw = $_POST['Erw'];
$Kinder = $_POST['Kinder'];
$message = $_POST['message'];
$datenschutz = $_POST['datenschutz'];

$mailTo = "mymail@gmail.com";
$headers = "From: ".$mailFrom;
$txt = "Buchungsanfrage - Ferienhaus Kleist von ".$name.".\n\n".$message;
mail($mailTo, $txt, $headers);
header("Location: index.php?mailsend");
}

?>


Vielen Dank im voraus! LG
 
Zuletzt bearbeitet:

m.scatello

Senior HTML'ler
15 Februar 2017
1.355
163
63
Variablen wie $straße solltest du meiden, schreibe statt dessen strasse.
Schreibe unter dem <?php diese Zeilen in das Script:
Code:
error_reporting(E_ALL);
ini_set('display_errors', true);

Die Mail-Funktion von PHP sollte man nicht benutzen, sondern eine fertige Mailklasse w.z.B. den phpMailer

kenne mich mit PHP nicht aus
Eine ganz schlechte Vorraussetzung, um solche Scripte zu schreiben.
 
  • Like
Reaktionen: XirLion

XirLion

Neues Mitglied
4 April 2020
17
0
1
30
Variablen wie $straße solltest du meiden, schreibe statt dessen strasse.
Schreibe unter dem <?php diese Zeilen in das Script:
Code:
error_reporting(E_ALL);
ini_set('display_errors', true);

Vielen Dank für deine Antwort, leider erhalte ich danach immer noch keine E-Mail, nur eine weiße Seite nach dem Absenden des Formulars.

Das Formular habe ich in der index.html erstellt und den PHP Code in einer extra PHP-Datei ist dies eventuell das Problem? :(
 
Zuletzt bearbeitet:

Sailor

Aktives Mitglied
14 Juli 2017
512
67
28
In deinem PHP Code fragst du ab...
PHP:
if(isset($_POST['submit']))
allerdings erzeugst du in deinem Formular keine Variable mit dem name='submit'!
Dann wird das, was in deiner if-Abfrage steht auch nicht ausgeführt.
 
  • Like
Reaktionen: XirLion

XirLion

Neues Mitglied
4 April 2020
17
0
1
30
In deinem PHP Code fragst du ab...
PHP:
if(isset($_POST['submit']))
allerdings erzeugst du in deinem Formular keine Variable mit dem name='submit'!
Dann wird das, was in deiner if-Abfrage steht auch nicht ausgeführt.

Danke jetzt erhalte ich die Mails! Nur die zurück URL auf die index.html funktioniert noch nicht:

Not Found
The requested URL was not found on this server.
 

Sailor

Aktives Mitglied
14 Juli 2017
512
67
28
Dann hast du das erste Problem gelöst... bitte beachte auch den Hinweis von @m.scatello , vor allem den, mit der Nutzung einer Mailklasse! Alles andere ist nur Quark und führt nur zu Problemen.
Zu deinem zweitem Problem kann ich nur sagen... prüfe die angegebene URL. Ist die PHP Datei im selben Verzeichnis wie die HTML Datei?
 
  • Like
Reaktionen: XirLion

XirLion

Neues Mitglied
4 April 2020
17
0
1
30
Dann hast du das erste Problem gelöst... bitte beachte auch den Hinweis von @m.scatello , vor allem den, mit der Nutzung einer Mailklasse! Alles andere ist nur Quark und führt nur zu Problemen.
Zu deinem zweitem Problem kann ich nur sagen... prüfe die angegebene URL. Ist die PHP Datei im selben Verzeichnis wie die HTML Datei?
Danke, bin grade dabei mich in die Nutzung einer Mailklasse einzulesen :)
 

XirLion

Neues Mitglied
4 April 2020
17
0
1
30
Habe jetzt einen PHPMailer anhand einer Anleitung von Github erstellt, leider führt dieser jedoch ebenfalls zu einem HTTP ERROR 500 .

Könnt Ihr mir vielleicht weiterhelfen und sagen woran es liegt?

Muss ich noch etwas beachten damit dieser mit meiner index.html kommuniziert? Finde leider im Internet nichts was mir weiterhilft :(

Freue mich über eure Antworten! Danke im voraus!

PHPMailer 5.2

PHP:
<?php



use PHPMailer\PHPMailer\PHPMailer;

use PHPMailer\PHPMailer\Exception;



require 'php/PHPMailer/src/Exception.php';

require 'php/PHPMailer/src/PHPMailer.php';

require 'php/PHPMailer/src/SMTP.php';

require 'php/PHPMailer/language/phpmailer.lang-de.php';



$mail = new  PHPMailer ;



// $ mail-> SMTPDebug = 3; // Ausführliche Debug-Ausgabe aktivieren



$mail -> isSMTP ();                                                      

$mail -> Host = 'smtp.gmail.com';                            

$mail -> SMTPAuth = true ;                                        

$mail -> Username = 'meineEmail@gmail.com' ;  

$mail -> Password = 'XXX' ;                                    

$mail -> SMTPSecure = 'tls' ;                                  

$mail -> Port = 587 ;                                                

$mail -> setFrom ( $email, $name );

$mail -> addAddress ( 'meineEmaily@gmail.com' , 'Ferienhaus' );

$mail -> addReplyTo ( $email );



$mail -> isHTML ( true );                            



$mail -> Subject = 'Buchungsanfrage - Ferienhaus' ;

$mail -> Body     = 'Dies ist der fettgedruckte HTML-Nachrichtentext <b>! </ b>' ;

$mail -> AltBody = 'Dies ist der Text im Klartext für Nicht-HTML-Mail-Clients' ;



$name=$_POST['name'];

$strasse=$_POST['strasse'];

$plz=$_POST['plz'];

$ort=$_POST['ort'];

$telefon=$_POST['telefon'];

$mailFrom=$_POST['email'];

$daterange=$_POST['daterange'];

$Erw=$_POST['Erw'];

$Kinder=$_POST['Kinder'];

$message=$_POST['message'];

$datenschutz=$_POST['datenschutz'];



$mail->isHTML(true);                        



$mail->Subject = 'Ein schöner Betreff';

$mail->Body = 'Das ist die Nachricht als `HTML-Version`';

$mail->AltBody = 'Das ist ohne HTML, es soll wohl da draußen noch Leute geben, die das brauchen';



if(!$mail->send()) {

    echo 'Mail wurde nicht abgesendet';

    echo 'Fehlermeldung: ' . $mail->ErrorInfo;

} else {

    echo 'Nachricht wurde abgesendet.';

}



?>
 
Zuletzt bearbeitet:

m.scatello

Senior HTML'ler
15 Februar 2017
1.355
163
63
Ein 500er Fehler erzeugt in der Regel einen Eintrag ins Error-Log, da schon mal rein gesehen?

Und nutze bitte die Formtierungsmöglichkeiten des Forums für den Quellcode, dann ist das besser lesbar.

Das wird zwar nicht den Fehler verursachen, aber:
PHP:
$mail->send();

if(!$mail->send())
damit sendest du 2x ;)
 
  • Like
Reaktionen: XirLion

XirLion

Neues Mitglied
4 April 2020
17
0
1
30
Ein 500er Fehler erzeugt in der Regel einen Eintrag ins Error-Log, da schon mal rein gesehen?

Der Error-Log gab mir folgende Meldungen:

PHP Warning: require(php/PHPMailer/src/Exception.php): failed to open stream: No such file or directory in /mnt/web518/c2/17/510740917/htdocs/php/formulartest.php on line 5

PHP Fatal error: require(): Failed opening required 'php/PHPMailer/src/Exception.php' (include_path='.:/opt/RZphp73/includes') in /mnt/web518/c2/17/510740917/htdocs/php/formulartest.php on line 5

wenn ich dies richtig deute, findet er die Exception.php Datei aus dem PHPMailer Ordner nicht oder kann diese nicht verarbeiten?
 

XirLion

Neues Mitglied
4 April 2020
17
0
1
30
Richtig erkannt. Aber warum siehst du dir nicht einfach mal ein Beispiel mit dem phpMailer an? Z.B. https://github.com/PHPMailer/PHPMailer/blob/master/examples/smtp.phps

Danke, habe mir schon einige Beispiele angeschaut und daran auch den oben von mir genannten phpMailer erstellt.

Leider funktioniert es egal wie einfach nicht, finde auch keine passende Lösung und mein English ist leider nicht das beste :( und meine Kenntnisse reichen nur für HTML und CSS.

Hab es versucht zu verstehen und ausprobiert, werde es jedoch jetzt aufgeben und bleibe beim einfachen Formular welches zumindest funktioniert :)

Meine Seite ist in HTML und nicht in PHP geschrieben, zudem mein Formular auch mehr Dinge wie im phpMailer bedient und das bekomme ich nicht zusammen gefügt.

Dennoch vielen Dank für eure Antworten!

LG