Files
baumer/PHPMAILER-ANLEITUNG.md

258 lines
6.4 KiB
Markdown

# 📧 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! 🚀**