# 📧 PHPMailer Einrichtungsanleitung

Diese Anleitung erklärt, wie Sie das Kontaktformular mit PHPMailer auf Ihrem Webserver einrichten.

## ✅ Was wurde installiert

```
webseite/
├── config.php              # E-Mail-Konfiguration (WICHTIG: Anpassen!)
├── send-mail.php           # Mail-Versand-Script
├── .htaccess               # Schutz der Konfiguration
└── phpmailer/              # PHPMailer Bibliothek
    ├── PHPMailer.php
    ├── SMTP.php
    └── Exception.php
```

## 🔧 Schritt 1: Konfiguration anpassen

Öffnen Sie `config.php` und passen Sie folgende Einstellungen an:

### E-Mail Grundeinstellungen

```php
define('MAIL_TO', 'baumer@traidendorf.de');  // IHR POSTFACH
define('MAIL_FROM', 'noreply@ihre-domain.de');  // Absender-Adresse
```

### Option A: Standard PHP mail() Funktion (Einfachste Lösung)

Die meisten Webhosting-Anbieter unterstützen die `mail()` Funktion direkt:

```php
define('USE_SMTP', false);  // So belassen
```

**Vorteile:**
- ✅ Keine zusätzliche Konfiguration nötig
- ✅ Funktioniert bei den meisten Hostern out-of-the-box

**Nachteile:**
- ⚠️ E-Mails landen manchmal im Spam
- ⚠️ Nicht alle Hoster erlauben mail()

**Geeignet für:** Strato, 1&1, All-Inkl, Host Europe, etc.

### Option B: SMTP (Zuverlässigste Lösung)

Für professionellen Versand mit SMTP:

```php
define('USE_SMTP', true);
define('SMTP_HOST', 'smtp.ihre-domain.de');  // SMTP-Server
define('SMTP_PORT', 587);  // 587 für TLS, 465 für SSL
define('SMTP_SECURE', 'tls');  // 'tls' oder 'ssl'
define('SMTP_USERNAME', 'ihre-email@ihre-domain.de');
define('SMTP_PASSWORD', 'ihr-sicheres-passwort');
```

**Vorteile:**
- ✅ Zuverlässigster Versand
- ✅ Bessere Spam-Bewertung
- ✅ Authentifizierung

**SMTP-Einstellungen für beliebte Hoster:**

#### Strato
```php
define('SMTP_HOST', 'smtp.strato.de');
define('SMTP_PORT', 587);
define('SMTP_SECURE', 'tls');
define('SMTP_USERNAME', 'ihre-email@ihre-domain.de');
```

#### 1&1 / IONOS
```php
define('SMTP_HOST', 'smtp.ionos.de');
define('SMTP_PORT', 587);
define('SMTP_SECURE', 'tls');
define('SMTP_USERNAME', 'ihre-email@ihre-domain.de');
```

#### All-Inkl
```php
define('SMTP_HOST', 'ihr-servername.kasserver.com');
define('SMTP_PORT', 587);
define('SMTP_SECURE', 'tls');
define('SMTP_USERNAME', 'ihre-email@ihre-domain.de');
```

#### Gmail (für Tests)
```php
define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_PORT', 587);
define('SMTP_SECURE', 'tls');
define('SMTP_USERNAME', 'ihre-gmail@gmail.com');
define('SMTP_PASSWORD', 'app-spezifisches-passwort');  // Nicht Ihr normales Passwort!
```
⚠️ Bei Gmail: [App-spezifisches Passwort erstellen](https://support.google.com/accounts/answer/185833)

## 🚀 Schritt 2: Auf Webserver hochladen

Laden Sie alle Dateien per FTP auf Ihren Webserver:

```
/public_html/               (oder /htdocs/, /www/)
  ├── index.html
  ├── kontakt.html
  ├── config.php           ← WICHTIG: Passwort hier drin!
  ├── send-mail.php
  ├── .htaccess
  ├── phpmailer/
  ├── css/
  ├── js/
  └── ...
```

## 🧪 Schritt 3: Testen

1. Öffnen Sie Ihre Website im Browser
2. Gehen Sie zur Kontaktseite
3. Füllen Sie das Formular aus
4. Senden Sie eine Test-Nachricht
5. Prüfen Sie Ihr Postfach (auch Spam-Ordner!)

### Fehlerbehebung

#### E-Mail kommt nicht an

**Lösung 1: Logfile prüfen**
- Schauen Sie im `error_log` Ihres Webservers
- Meist zu finden im Root-Verzeichnis oder `/logs/`

**Lösung 2: SMTP statt mail() verwenden**
- Setzen Sie `USE_SMTP` auf `true` in der `config.php`
- Konfigurieren Sie die SMTP-Einstellungen

**Lösung 3: PHP mail() aktivieren**
- Kontaktieren Sie Ihren Hoster
- Fragen Sie, ob die `mail()` Funktion aktiviert ist

#### E-Mails landen im Spam

**Lösung:**
- Verwenden Sie SMTP statt mail()
- Stellen Sie sicher, dass `MAIL_FROM` eine echte E-Mail Ihrer Domain ist
- Richten Sie SPF/DKIM Records ein (bei Ihrem Hoster)

#### Fehler "Could not instantiate mail function"

**Lösung:**
- Die PHP `mail()` Funktion ist deaktiviert
- Wechseln Sie zu SMTP (`USE_SMTP = true`)

#### Fehler "SMTP connect() failed"

**Lösung:**
- SMTP-Host falsch → Prüfen Sie bei Ihrem Hoster
- Port falsch → Meist 587 (TLS) oder 465 (SSL)
- Benutzername/Passwort falsch
- Firewall blockiert → Kontaktieren Sie Ihren Hoster

## 🔒 Sicherheit

### WICHTIG: Schützen Sie config.php!

Die `.htaccess` Datei schützt bereits Ihre `config.php`. Überprüfen Sie:

```bash
# Test: Diese URL sollte NICHT funktionieren:
https://ihre-domain.de/config.php
```

Sie sollten einen "403 Forbidden" Fehler sehen.

### Weitere Sicherheitsmaßnahmen

1. **Sichere Passwörter verwenden**
   - Mindestens 16 Zeichen
   - Groß-/Kleinbuchstaben, Zahlen, Sonderzeichen

2. **SSL/HTTPS verwenden**
   - Ihr Hoster sollte ein kostenloses Let's Encrypt Zertifikat anbieten

3. **Rate Limiting ist bereits aktiv**
   - Maximal 1 E-Mail pro Minute pro IP-Adresse
   - Schutz gegen Spam-Bots

4. **Honeypot ist bereits integriert**
   - Verstecktes Feld zum Spam-Schutz

## 📊 Features des Kontaktformulars

✅ **Spam-Schutz**
- Honeypot-Feld (verstecktes Feld für Bots)
- Rate Limiting (max. 1 Mail pro Minute)
- Eingabe-Validierung

✅ **Benutzerfreundlich**
- Erfolgs-/Fehlermeldungen
- Formular-Vorausfüllung (Maschine aus Link)
- Loading-Animation beim Absenden

✅ **Professionell**
- HTML-E-Mails mit Styling
- Plain-Text Fallback
- IP-Adresse und Zeitstempel in E-Mail

✅ **Datenschutz**
- Keine Daten werden extern gespeichert
- Alles auf Ihrem Server
- DSGVO-konform

## 🎯 Anpassungen

### E-Mail-Design ändern

Bearbeiten Sie in `send-mail.php` den HTML-Code ab Zeile ~95:

```php
$mailBody = '
<html>
  <!-- Hier können Sie das Design anpassen -->
</html>
';
```

### Weiterleitungs-URLs ändern

In `config.php`:

```php
define('SUCCESS_URL', 'kontakt.html?success=1');
define('ERROR_URL', 'kontakt.html?error=1');
```

### Zusätzliche Formularfelder

1. Feld in `kontakt.html` hinzufügen
2. Feld in `send-mail.php` validieren und einbinden
3. E-Mail-Template in `send-mail.php` anpassen

## 📞 Support

**Bei technischen Problemen:**
1. Prüfen Sie das `error_log` auf Ihrem Server
2. Kontaktieren Sie Ihren Webhoster für SMTP-Einstellungen
3. Testen Sie zunächst mit `USE_SMTP = false` (mail() Funktion)

**Hoster-Support fragen nach:**
- "PHP mail() Funktion aktiviert?"
- "SMTP-Server Zugangsdaten für E-Mail-Versand"
- "Welcher Port für SMTP? (587 oder 465)"

---

**Viel Erfolg! 🚀**
