Hallo ' . htmlspecialchars($data['band_name']) . ',
+Sie haben eine neue Buchungsanfrage erhalten:
+ +' . nl2br(htmlspecialchars($data['message'])) . ' +
Kontaktdaten:
++ Bitte kontaktieren Sie den Kunden direkt, um die Details zu besprechen. +
+diff --git a/CHANGELOG_EMAIL_FEATURES.md b/CHANGELOG_EMAIL_FEATURES.md new file mode 100644 index 0000000..325590f --- /dev/null +++ b/CHANGELOG_EMAIL_FEATURES.md @@ -0,0 +1,163 @@ +# Email & Buchungssystem Updates + +## Änderungen vom 2. Dezember 2025 + +### ✅ Implementierte Features: + +#### 1. **Echte Email-Funktionalität** (`includes/email.php`) + - ✨ PHP `mail()` Funktion implementiert statt nur Logging + - ✅ HTML-Email-Support mit professionellen Templates + - 📧 Automatische Headers (From, Reply-To, Content-Type) + - 📝 Logging bleibt erhalten für Debugging + +#### 2. **Email-Template-System** + - 🎨 Professionelle HTML-Email-Templates mit Styling + - 🎸 "booking_request" - Email an die Band + - ✅ "booking_confirmation" - Bestätigung an den Kunden + - 🎨 Gelbes Branding (#f4b807) passend zur Plattform + +#### 3. **Verbesserte Buchungsanfragen** (`anfrage.php`) + - 📧 Automatische Email an Band bei neuer Anfrage + - ✅ Bestätigungs-Email an Kunden + - 👥 **Gäste-Buchungen** ohne Login möglich + - ✔️ Bessere Formular-Validierung + - 📅 Datum-Mindestauswahl (nur zukünftige Daten) + +#### 4. **Band-Email-Verwaltung** (`profil.php`) + - 📧 Bands können eigene Email-Adresse hinterlegen + - 📝 Klare Beschriftung: "Email für Buchungsanfragen" + - 💾 Email wird in der Datenbank gespeichert + +#### 5. **Datenbank-Updates** (`database.sql`) + - 🗄️ Neue Spalte `email` in `bands` Tabelle + - 📜 Migration-Script: `migrate_add_band_email.php` + +--- + +## 📋 Installations-Anleitung + +### Schritt 1: Migration ausführen +```bash +php migrate_add_band_email.php +``` + +### Schritt 2: Mail-Server konfigurieren +Stelle sicher, dass PHP's `mail()` Funktion auf dem Server konfiguriert ist: +- Ubuntu/Debian: `sudo apt-get install sendmail` +- Oder verwende einen SMTP-Relay wie Postfix + +### Schritt 3: Testen +1. Als Band einloggen +2. Profil bearbeiten und Email-Adresse hinzufügen +3. Als Gast oder Kunde eine Buchungsanfrage senden +4. Prüfe die Emails (und `storage/logs/mail.log`) + +--- + +## 🎯 Neue Funktionen im Detail + +### Email an Band (booking_request) +``` +Enthält: +- Event-Datum, Ort, Typ +- Budget +- Nachricht des Kunden +- Kontaktdaten (Name, Email) +- Professionelles Layout +``` + +### Email an Kunde (booking_confirmation) +``` +Enthält: +- Bestätigung der Anfrage +- Event-Details +- Hinweis auf Rückmeldung der Band +- Support-Kontakt +``` + +### Gäste-Buchungen +``` +- Keine Registrierung nötig +- Name + Email Pflichtfelder +- Email-Validierung +- Gleiche Funktionalität wie eingeloggte User +``` + +--- + +## 🔧 Konfiguration + +### Email-Absender +In `includes/config.php`: +```php +const SITE_NAME = 'GetYourBand'; +const SUPPORT_EMAIL = 'support@getyourband.ch'; +``` + +### Band-Email Fallback +Falls Band keine Email hinterlegt hat: +```php +info@[bandname].ch +``` +(Leerzeichen werden entfernt, lowercase) + +--- + +## 📝 Nächste Schritte (Optional) + +### Empfohlene Erweiterungen: +1. **PHPMailer Integration** für SMTP-Support +2. **Email-Queue** für große Mengen +3. **Email-Templates per Datenbank** konfigurierbar +4. **Email-Benachrichtigungen** für: + - Status-Änderungen von Anfragen + - Neue Bewertungen + - Profil-Freigaben + +### SMTP mit PHPMailer (Beispiel): +```bash +composer require phpmailer/phpmailer +``` + +Dann in `includes/email.php` ersetzen: +```php +use PHPMailer\PHPMailer\PHPMailer; +// ... SMTP Konfiguration +``` + +--- + +## 🐛 Debugging + +### Email kommt nicht an? +1. Prüfe `storage/logs/mail.log` - werden Emails geloggt? +2. Prüfe Server Mail-Logs: `tail -f /var/log/mail.log` +3. Teste PHP mail(): `php -r "mail('test@example.com', 'Test', 'Test');"` +4. Prüfe Spam-Ordner + +### Häufige Probleme: +- **sendmail nicht installiert**: `sudo apt-get install sendmail` +- **Port 25 blockiert**: Verwende SMTP-Relay +- **SPF/DKIM fehlt**: Emails landen im Spam + +--- + +## ✨ Zusammenfassung + +**Vorher:** +- ❌ Emails wurden nur geloggt +- ❌ Keine echten Email-Benachrichtigungen +- ❌ Gäste konnten nicht buchen +- ❌ Bands hatten keine Email-Verwaltung + +**Nachher:** +- ✅ Echte Email-Versand mit HTML-Templates +- ✅ Automatische Benachrichtigungen an Band & Kunde +- ✅ Gäste-Buchungen möglich +- ✅ Bands verwalten ihre Email-Adresse +- ✅ Professionelles Design +- ✅ Bessere Validierung + +--- + +**Viel Erfolg! 🎸🎵** diff --git a/anfrage.php b/anfrage.php index bac248c..4917410 100644 --- a/anfrage.php +++ b/anfrage.php @@ -26,12 +26,31 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { 'message' => trim((string) $_POST['message'] ?? ''), ]; + $guestName = trim($_POST['guest_name'] ?? ''); + $guestEmail = trim($_POST['guest_email'] ?? ''); + if (!$data['event_date'] || !$data['location']) { $error = 'Bitte Datum und Ort ausfüllen.'; + } elseif (!$user && (!$guestName || !$guestEmail)) { + $error = 'Bitte geben Sie Ihren Namen und Email-Adresse an.'; + } elseif (!$user && !filter_var($guestEmail, FILTER_VALIDATE_EMAIL)) { + $error = 'Bitte geben Sie eine gültige Email-Adresse an.'; } else { createRequest($data); - $message = 'Anfrage gespeichert und an die Band gemeldet.'; - sendEmail('info@' . preg_replace('/\s+/', '', strtolower($band['name'])) . '.ch', 'Neue Anfrage', 'Neue Anfrage für ' . $band['name']); + + $customer = $user; + if (!$user && $guestName && $guestEmail) { + $customer = ['name' => $guestName, 'email' => $guestEmail]; + } + + sendBookingRequestEmail($band, $data, $customer); + + $confirmEmail = $user['email'] ?? $guestEmail ?? null; + if ($confirmEmail) { + sendBookingConfirmationEmail($confirmEmail, $band, $data); + } + + $message = 'Anfrage erfolgreich gesendet! Die Band wurde benachrichtigt und wird sich bei Ihnen melden.'; } } @@ -55,20 +74,34 @@ $settings = settings();
Hallo ' . htmlspecialchars($data['band_name']) . ',
+Sie haben eine neue Buchungsanfrage erhalten:
+ ++ Bitte kontaktieren Sie den Kunden direkt, um die Details zu besprechen. +
+Vielen Dank für Ihre Anfrage an ' . htmlspecialchars($data['band_name']) . '.
+ ++ Die Band wird sich in Kürze bei Ihnen melden. Bitte überprüfen Sie auch Ihren Spam-Ordner. +
+ ++ Bei Fragen können Sie uns jederzeit unter ' . SUPPORT_EMAIL . ' erreichen. +
+