Files
baumer/PHPMAILER-ANLEITUNG.md

6.4 KiB

📧 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

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:

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:

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

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

define('SMTP_HOST', 'smtp.ionos.de');
define('SMTP_PORT', 587);
define('SMTP_SECURE', 'tls');
define('SMTP_USERNAME', 'ihre-email@ihre-domain.de');

All-Inkl

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)

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

🚀 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:

# 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:

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

Weiterleitungs-URLs ändern

In config.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! 🚀