PHP Email: Was du wirklich wissen musst
Wenn ich mit PHP Email arbeite, will ich nur drei Dinge: Die Mail soll ankommen, sie soll nicht im Spam landen, und ich will später keine Zeit mit Debugging verschwenden. Genau daran scheitern viele Projekte. Nicht weil PHP schlecht ist. Sondern weil E-Mails kleine Regeln haben und der einfache Weg oft der falsche ist.
Die gute Nachricht: Du brauchst kein kompliziertes Setup, um sauber E-Mails aus PHP zu senden. Aber du brauchst die richtige Methode. mail() ist schnell gestartet, aber für echte Projekte oft zu dünn. Mit SMTP und einer Bibliothek wie PHPMailer bist du in der Praxis fast immer besser dran.
PHP Email mit mail(): schnell, aber begrenzt
Die eingebaute Funktion mail() ist der einfachste Einstieg. Sie sieht ungefähr so aus:
mail($to, $subject, $message, $headers);
Das Problem: Einfach heißt nicht gut. Ich nutze mail() nur, wenn ich eine schnelle interne Lösung brauche oder ein sehr kleines Projekt baue. Für alles, was zuverlässig sein muss, ist SMTP die bessere Wahl.
Warum? Weil mail() stark von der Serverkonfiguration abhängt. Wenn dein Server schlecht eingerichtet ist, landen Mails im Nirgendwo oder direkt im Spam.
PHP Email mit PHPMailer: meine Standardlösung
Wenn ich in PHP E-Mails verschicke, setze ich meistens auf PHPMailer. Die Bibliothek macht vieles einfacher: SMTP, HTML-Mails, Anhänge, saubere Fehlerausgaben. Genau das brauchst du im Alltag.
Du kannst PHPMailer über Composer installieren:
composer require phpmailer/phpmailer
Die offizielle Doku findest du hier: PHPMailer auf GitHub.
PHP Email mit SMTP: so wird es stabil
SMTP ist der saubere Weg, weil du damit einen echten Mailserver ansprichst. Das ist besser für Zustellbarkeit, Kontrolle und Fehlersuche. Wenn ich will, dass Mails ankommen, nutze ich SMTP fast immer.
Ein typisches Setup sieht so aus:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'secret';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('[email protected]', 'Dein Name');
$mail->addAddress('[email protected]');
$mail->Subject = 'Test';
$mail->Body = 'Hallo, das ist eine Testmail.';
$mail->send();
} catch (Exception $e) {
echo "Fehler: {$mail->ErrorInfo}";
}
Das ist die Basis. Nicht sexy. Aber es funktioniert. Und bei E-Mails gewinnt immer das, was funktioniert.
PHP Email: HTML-Mails richtig aufbauen
Wenn du bessere Conversion, bessere Lesbarkeit oder bessere Markenwirkung willst, nutze HTML-Mails. Aber mach es sauber. Ich halte mich an ein simples Prinzip: einfaches Layout, klare Struktur, wenig Chaos.
So aktivierst du HTML:
$mail->isHTML(true);
$mail->Body = 'Hallo
Deine E-Mail hier.
';
$mail->AltBody = 'Hallo\nDeine E-Mail hier.';
Wichtig: Immer auch eine Textversion senden. Das hilft bei Zustellbarkeit und ist für manche Mail-Clients Pflichtgefühl und Realität zugleich.
PHP Email: die häufigsten Fehler
Ich sehe bei PHP Email immer wieder dieselben Fehler. Die meisten davon sind leicht zu vermeiden, wenn du weißt, worauf du achten musst.
- Falscher From-Absender: Nutze eine Adresse, die zu deiner Domain passt.
- Kein SMTP: Verlass dich nicht blind auf
mail(). - Kein SPF, DKIM, DMARC: Ohne diese Einträge leidet die Zustellbarkeit massiv.
- Kein AltBody: HTML allein ist nicht genug.
- Schlechte Fehlermeldung: Logge den Fehler, statt im Dunkeln zu suchen.
- Unsaubere Benutzereingaben: Validierung ist Pflicht, sonst baust du Sicherheitsprobleme ein.
PHP Email: Zustellbarkeit verbessern
Eine verschickte Mail ist nicht automatisch eine zugestellte Mail. Das ist der Unterschied, der Geld kostet oder Leads bringt. Wenn ich Zustellbarkeit will, achte ich auf diese Punkte:
- Verwende eine echte Domain statt Freemail-Absendern.
- Richte SPF, DKIM und DMARC ein.
- Nutze einen seriösen SMTP-Anbieter.
- Schreibe klare Betreffzeilen ohne Spam-Wörter.
- Halte den Inhalt sauber und nutze ein gutes Text-zu-HTML-Verhältnis.
- Teste mit Postfach-Anbietern, bevor du live gehst.
Für die technischen Grundlagen zu SPF und DKIM sind die offiziellen Dokumentationen nützlich: SPF RFC 7208 und DKIM RFC 6376.
PHP Email: Sicherheit zuerst
Wenn du E-Mails aus PHP verschickst, arbeitest du oft mit Formulardaten. Genau dort entstehen die meisten Risiken. Ich mache deshalb immer drei Dinge:
- Validierung: Prüfe E-Mail-Adressen, Namen und Inhalte.
- Escaping: Baue Inhalte nicht blind in HTML ein.
- Rate Limiting: Schütze dein Formular vor Spam und Missbrauch.
Wenn du Kontaktformulare baust, sieh dir auch die PHP-Filterfunktionen an: PHP Filter Manual.
PHP Email: Wann ich was nutze
Ich entscheide nach Zweck, nicht nach Bequemlichkeit. So mache ich es:
- mail() für schnelle Tests oder sehr einfache interne Benachrichtigungen.
- PHPMailer + SMTP für Kontaktformulare, Bestätigungen, Rechnungen und alles Wichtige.
- Externer Maildienst für größere Systeme mit vielen E-Mails und sauberem Tracking.
Wenn E-Mail für dein Business wichtig ist, dann behandle das wie ein System. Nicht wie einen Nebensatz im Code.
PHP Email: Mein kurzer Praxis-Check
Bevor ich ein Projekt abschließe, gehe ich diese Liste durch:
- SMTP aktiv?
- Absenderdomain korrekt?
- HTML und Textversion vorhanden?
- Fehlerlog vorhanden?
- SPF, DKIM, DMARC gesetzt?
- Spam-Test gemacht?
Wenn du hier überall ein Häkchen setzen kannst, bist du in einer deutlich besseren Position als die meisten. Und genau das zählt.
PHP Email: Fazit
PHP Email ist kein Hexenwerk. Aber es wird schnell chaotisch, wenn du den einfachen Weg mit dem richtigen Weg verwechselst. Mein Rat: Starte nicht mit Bastellösungen. Nutze PHPMailer, sende über SMTP, achte auf Zustellbarkeit und sichere dein Formular sauber ab. Dann bekommst du ein Setup, das nicht nur läuft, sondern verlässlich läuft.