# Spezifikation: Issue #15 – Kontaktformular Backend-Integration **Repo:** greggy/landingpage-haus-schleusingen **Issue:** [#15](https://git.home.kies-media.de/greggy/landingpage-haus-schleusingen/issues/15) **Komplexität:** S (Small) **Datum:** 2026-05-13 ## Problem Das Kontaktformular simuliert den Versand nur mit `setTimeout`. Anfragen gehen verloren. ## Lösung: mailto:-Link mit vorformatierter E-Mail Da das Projekt eine **statische Landingpage** (HTML/CSS/JS) ohne Backend ist, wird der Formular-Submit so umgebaut, dass ein `mailto:`-Link generiert wird. Der E-Mail-Client des Nutzers öffnet sich mit einer vorausgefüllten E-Mail an `mki@kies-media.de`. ### Warum mailto: statt Formspree? - Keine externe Abhängigkeit, kein Account nötig - Funktioniert zuverlässig auf allen Geräten - Kein Privacy-Problem (Daten gehen nicht über Drittanbieter) - Keine Limits (Formspree: 50/Monat kostenlos) ### Warum kein eigenes Backend? - Statische Seite (nginx serves HTML only) - Extra Infrastruktur nötig (PHP/Node.js + SMTP) - Overkill für eine Vermietungs-Landingpage ## Technische Umsetzung ### Formular-HTML (haus-schleusingen.html) - Form bleibt wie vorhanden (fname, lname, email, phone, interest, message) - Keine Änderung an name-Attributen nötig (alle bereits kompatibel) ### JavaScript (js/haus-schleusingen.js) Form-Submit-Handler wird ersetzt: ```javascript $("#contactForm").on("submit", function (e) { e.preventDefault(); var fname = $("#fname").val().trim(); var lname = $("#lname").val().trim(); var email = $("#email").val().trim(); var phone = $("#phone").val().trim(); var interest = $("#interest").val(); var message = $("#message").val().trim(); var subject = "Kontaktanfrage: " + interest; var body = "Von: " + fname + " " + lname + "\n"; body += "E-Mail: " + email + "\n"; if (phone) body += "Telefon: " + phone + "\n"; body += "Anliegen: " + interest + "\n\n"; body += message; var mailto = "mailto:mki@kies-media.de" + "?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body); window.location.href = mailto; // Erfolgsmeldung anzeigen $("#contactForm").hide(); $("#formSuccess").fadeIn(400); }); ``` ### Edge Cases - **Kein E-Mail-Client installiert:** mailto:-Link tut nichts → Nutzer sieht trotzdem Erfolgsmeldung (suboptimal, aber bei statischer Seite akzeptabel) - **Leere Felder:** HTML5 `required` auf fname, lname, email verhindert leeren Submit - **Sonderzeichen:** `encodeURIComponent` kodiert Umlaute und Sonderzeichen korrekt - **Lange Nachrichten:** mailto:-Body hat praktische Limits (~2000 Zeichen URL), für Kontaktformulare ausreichend ### Akzeptanzkriterien 1. ✅ Bei Submit öffnet sich der E-Mail-Client mit vorformatierter E-Mail 2. ✅ Betreff enthält Art des Anliegens 3. ✅ Body enthält alle Formulardaten strukturiert 4. ✅ Erfolgsmeldung wird angezeigt 5. ✅ Kein setTimeout-Simulatoren mehr 6. ✅ Bestehendes CSS/Styling bleibt unverändert ## Branch: `feature/issue-15-kontaktformular-backend` ## Target: `main`