Die mail()-Funktion ist in PHP integriert und wird verwendet, um E-Mails direkt von einem Webserver zu versenden. Es ist ein einfacher Weg, um Benachrichtigungen, Kontaktformulare, Auftragsbestätigungen und andere Arten von Nachrichten zu versenden.
Geeignet für grundlegende E-Mail-Funktionen ohne Verwendung externer Bibliotheken.
Wie mail() funktioniert
Wenn Sie die Funktion mail() aufrufen, übergibt PHP die E-Mail an den auf dem Server installierten Mail Transfer Agent (MTA) (normalerweise Sendmail oder Postfix). Der MTA verarbeitet dann die Nachricht und stellt sie an die angegebene Adresse zu.
Syntax
mail(an, Betreff, Nachricht, Kopfzeilen, Parameter);
Parameter
| Parameter | Beschreibung |
|---|---|
| $an | Die E-Mail-Adresse des Empfängers. Sie können mehrere durch Komma getrennte Adressen angeben. |
| $Betreff | Betreff der E-Mail. Darf keine Zeilenumbrüche enthalten. |
| $nachricht | Hauptteil der Nachricht. |
| $Kopfzeilen | Zusätzliche Kopfzeilen wie From, Reply-To, Cc, Bcc, etc. |
| $Parameter | Zusätzliche Parameter, wie z. B. die Angabe des Absenders für Sendmail (-f). |
Einfaches Beispiel
<?php
$to = "user@example.com";
$subject = "Test Email";
$message = "Hello! This is a test email sent using PHP.";
$headers = "From: webmaster@yourdomain.com";
mail($to, $subject, $message, $headers);
?> Wichtige Hinweise
1. Von: Kopfzeile ist erforderlich
Wenn Sie keinen From: Header angeben, weisen die meisten Mailserver die Nachricht als verdächtig oder Spam zurück.
$headers = "From: noreply@yourdomain.com";
2. Formatierung mehrzeiliger Nachrichten
Verwenden Sie \r\n, um Zeilen in Ihrer Nachricht zu trennen:
$message = "Hallo,\r\n\r\nDanke für Ihre Bestellung.\r\n\r\nMit freundlichen Grüßen,\r\nIhr Team";
3. Mehrere Kopfzeilen
Verwenden Sie \r\n, um mehrere Kopfzeilen wie Reply-To, Cc und Bcc zu trennen:
$headers = "From: admin@yourdomain.com\r\n";
$headers .= "Reply-To: support@yourdomain.com\r\n";
$headers .= "Cc: someone@yourdomain.com\r\n";
Beispiel: Senden einer HTML-E-Mail (nur Text)
Die Funktion mail() unterstützt von Haus aus keine Anhänge. Sie können jedoch HTML-E-Mails versenden oder den Inhaltstyp manuell festlegen:
$$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: info@yourdomain.com";
$message = "<h1>Hello!</h1><p>Your order has been received.</p>";
mail("user@example.com", "Order Confirmation", $message, $headers);Allgemeine Probleme und Lösungen| Problem | Ursache/Lösung |
|---|---|
| E-Mail nicht zugestellt | Fehlender From: Header oder Server-IP steht auf einer schwarzen Liste |
| E-Mail wird überhaupt nicht gesendet | Kein MTA installiert (z.B. Sendmail/Postfix erforderlich) |
| Fehler: mail() wurde deaktiviert | mail() ist in php.ini deaktiviert (oft durch Host-Policy) |
| Russischer Text erscheint als ???? | Charset im Header nicht auf UTF-8 eingestellt |
| E-Mails gehen an Spam | Falscher Absender, kein SPF/DKIM, oder falsch konfigurierte Domäne |
Schlussfolgerung
Die mail()-Funktion ist ein einfaches, aber mächtiges Werkzeug zum Versenden von E-Mails direkt aus PHP-Skripten. Sie ist:
- Einfach zu benutzen
- Benötigt keine zusätzlichen Bibliotheken
- Geeignet für interne Benachrichtigungen, Kontaktformulare und Autoresponder
Beachten Sie jedoch seine Einschränkungen:
- Hängt von der Mail-Konfiguration des Servers ab
- Unterstützt keine Anhänge
- Kann bei einigen Shared Hosting-Umgebungen standardmäßig deaktiviert sein
Wenn Sie vorhaben, regelmäßig E-Mails zu versenden, stellen Sie sicher, dass Ihr Server ordnungsgemäß für ausgehende E-Mails konfiguriert ist (mit installiertem Sendmail/Postfix, eingerichteten SPF/DKIM-Einträgen und aktiviertem mail() in php.ini).


