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.
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.
mail(an, Betreff, Nachricht, Kopfzeilen, 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). |
<?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);
?>
Wenn Sie keinen From: Header angeben, weisen die meisten Mailserver die Nachricht als verdächtig oder Spam zurück.
$headers = "From: noreply@yourdomain.com";
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";
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";
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 |
Die mail()-Funktion ist ein einfaches, aber mächtiges Werkzeug zum Versenden von E-Mails direkt aus PHP-Skripten. Sie ist:
Beachten Sie jedoch seine Einschränkungen:
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).