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

ParameterBeschreibung
$anDie E-Mail-Adresse des Empfängers. Sie können mehrere durch Komma getrennte Adressen angeben.
$BetreffBetreff der E-Mail. Darf keine Zeilenumbrüche enthalten.
$nachrichtHauptteil der Nachricht.
$KopfzeilenZusätzliche Kopfzeilen wie From, Reply-To, Cc, Bcc, etc.
$ParameterZusä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
ProblemUrsache/Lösung
E-Mail nicht zugestelltFehlender From: Header oder Server-IP steht auf einer schwarzen Liste
E-Mail wird überhaupt nicht gesendetKein MTA installiert (z.B. Sendmail/Postfix erforderlich)
Fehler: mail() wurde deaktiviertmail() 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 SpamFalscher 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).