HTML Kontaktformular per PHP an Mail senden?
Hallo, ich hab ein Kontaktformular in HTML erstellt bei dem man auch Dateien hochladen kann. Ich hab es auch schon so eingestellt dass alle Daten (Antworten) an mich per Mail gesendet werden, allerdings schaffe ich es nicht dass auch die Dateien als Anhang in der Mail mit gesendet werden, kann mir dabei jemand helfen?
Hier mein Code:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<title>NAME | Kontakt</title>
<meta charset="utf-8">
</head>
<body>
<div id="wrapper">
<header><a href="index.html"><img src="bilder/logo vorschau.png" alt="Das Logo konnte nicht geladen werden!"></a></header>
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="ueber.html">Über</a></li>
<li><a href="kontakt.html"><b>Kontakt</b></a></li>
</ul>
</nav>
<section>
<div id="kontaktformular">
<h1>Wie können wir dir helfen?</h1>
<?php
if(isset($_POST["submit"])){
mail("reinhard.habisohn@icloud.com", "Kontaktformular von ".$_POST["name"], 'Name: '.$_POST["name"].' || Email: '.$_POST["email"].' || Telefonnummer: '.$_POST["telefon"].' || Priorität: '.$_POST["priorität"].' || Betreff: '.$_POST["betreff"].' || Nachricht: '.$_POST["message"]);
?>
<em><h1 style="color: green;">Deine Anfrage wurde erfolgreich versendet!</h1><a>(Die Antwort senden wir dir an die angegebene E-Mail Adresse!)</a></em>
<?php
}
?>
<form action="index.php" method="post" enctype="multipart/form-data">
<br><label>Name:</label><br>
<input type="text" name="name" required><br>
<br><label>E-Mail:</label><br>
<input type="email" name="email" required><br>
<br><label>Telefonnummer (optional):</label><br>
<input type="number" name="telefon"><br>
<br><label>Wichtigkeit:</label><br>
<select name="priorität" required>
<option value"gering">Gering</option>
<option value"mittel">Mittel</option>
<option value"hoch">Hoch</option>
</select><br>
<br><label>Betreff:</label><br>
<input type="text" name="betreff" required><br>
<br><label>Nachricht:</label><br>
<textarea rows="7" name="message" required></textarea><br>
<br><label>Anhang (optional):</label><br>
<input type="file" name="datei[]" multiple><br>
<br><button type="submit" name="submit">Absenden</button>
</form>
</div>
</section>
</div>
</body>
</html>
Vielen Dank im Vorhinein!
2 Antworten
Zuallererst wäre es gut, die Fehler in deinem HTML-Code zu beheben.
1) Der Doctype ist falsch. So wäre er richtig:
<!DOCTYPE html>
2) Es gibt kein titel-Element. Beachte, den Endtag zu setzen.
<title>NAME | Kontakt</title>
3) Das h1-Element gehört nicht in ein Inline-Element. Entweder du drehst die Reihenfolge um:
<h1 style="color: green;"><em><!-- ... --></em></h1>
<a href="..."><em><!-- ... --></em></a>
Oder du ersetzt das em-Element direkt gegen CSS:
<h1 style="color: green; font-style: italic"><!-- ... --></h1>
<a href="..." style="font-style: italic"><!-- ... --></a>
Noch besser wäre es natürlich, dass CSS in deine CSS-Datei zu verlagern.
4) Bei deinen option-Tags fehlt das Gleichheitszeichen für das value-Attribut.
<option value="gering">Gering</option>
5) Ein erforderliches Auswahlfeld (select) braucht entweder ein option-Element mit leerem Wert oder du setzt das size-Attribut auf ihm.
<select name="priorität" required size="3">
6) Du schließt das oberste div-Element (#wrapper) nicht.
7) Beachte, dass eingebundene Dateien im Pfadnamen kein Leerzeichen haben sollten (dieses wäre zumindest zu maskieren). Ich würde die Bilddatei in logo-vorschau.png umbenennen.
Zu deinem E-Mail-Problem: Ich würde für den E-Mail-Versand eher auf PHPMailer zurückgreifen, statt auf die mail-Funktion der Standardbibliothek. Einen Anhang kannst du via addAttachment-Methode an die E-Mail hängen.
Die Datei, die hochgeladen werden soll, müsstest du allerdings erst (zumindest temporär) abspeichern. Ein einfache Anleitung dafür findest du hier.
Ok, vielen dank
Bei den ersten beiden Fehlern hab ich mich beim abschreiben vertan und den rest habe ich gerade behoben, danke!
Mein E-Mail problem schau ich mir jetzt mal an und melde mich falls ich Probleme dabei habe, aber vielen dank nochmal!
dazu brauchst du das
https://www.php.net/manual/de/features.file-upload.multiple.php
ist doch eine gute übung .
steht aber auch unten als letzter satz auf dem anderen link
OK, vielen dank, nur weis ich leider nicht wie ich das umschreiben muss dass es für mich passt da ich mich mit php noch nicht so gut auskenne, hab erst letzte Woche damit begonnen :/