Signatur
Beschreibung
imap_mail() sendet eine E-Mail-Nachricht an einen oder mehrere Empfänger. Die Funktion gehört zur PHP-IMAP-Erweiterung und ermöglicht es, Empfänger in den Feldern To, CC und BCC anzugeben sowie zusätzliche Mail-Header zu setzen.
Im Gegensatz zur Funktion mail() bietet imap_mail() einen direkten Parameter für CC- und BCC-Empfänger sowie einen Reply-To-Parameter, was die Handhabung etwas komfortabler macht. Mehrere Empfänger werden durch Kommas getrennt angegeben.
Die Funktion setzt voraus, dass die IMAP-Erweiterung (ext/imap) installiert und aktiviert ist. Auf dem Server muss außerdem ein funktionsfähiges Mail-Transfer-Agent (MTA) vorhanden sein, da die E-Mail intern über den Sendmail-Pfad oder eine ähnliche Konfiguration zugestellt wird.
Hinweis: Für komplexere Anforderungen wie MIME-Anhänge oder SMTP-Authentifizierung empfiehlt sich der Einsatz einer spezialisierten Bibliothek wie PHPMailer oder Symfony Mailer anstelle dieser Funktion.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $to Pflicht | string | E-Mail-Adresse(n) des/der Hauptempfänger. Mehrere Adressen werden durch Kommas getrennt, z. B. "alice@example.com, bob@example.com". |
|
| $subject Pflicht | string | Der Betreff der E-Mail-Nachricht. | |
| $message Pflicht | string | Der Nachrichtentext der E-Mail. Zeilenumbrüche sollten als \r\n (CRLF) gemäß dem RFC-Standard übergeben werden. |
|
| $additional_headers | ?string | null | Optionale zusätzliche Mail-Header, z. B. "From: sender@example.com\r\nContent-Type: text/plain; charset=UTF-8". Mehrere Header werden durch \r\n getrennt. |
| $cc | ?string | null | E-Mail-Adresse(n) für das CC-Feld (Kopie). Mehrere Adressen durch Kommas trennen. |
| $bcc | ?string | null | E-Mail-Adresse(n) für das BCC-Feld (Blindkopie). Mehrere Adressen durch Kommas trennen. |
| $reply_to | ?string | null | E-Mail-Adresse, an die Antworten gerichtet werden sollen (Reply-To-Header). |
Rückgabewert
true zurück, wenn die E-Mail erfolgreich an den Mail-Transfer-Agenten übergeben wurde, andernfalls false. Ein Rückgabewert von true bedeutet nicht zwingend, dass die E-Mail tatsächlich zugestellt wurde.Beispiele
Einfache E-Mail senden
<?php
$to = 'empfaenger@example.com';
$subject = 'Testmail via imap_mail';
$message = "Hallo,\r\n\r\nDies ist eine Testnachricht.\r\n\r\nViele Grüße";
$headers = "From: absender@example.com\r\nContent-Type: text/plain; charset=UTF-8";
$result = imap_mail($to, $subject, $message, $headers);
if ($result) {
echo 'E-Mail wurde erfolgreich übergeben.';
} else {
echo 'Fehler beim Senden der E-Mail.';
}
E-Mail mit CC, BCC und Reply-To
<?php
$to = 'hauptempfaenger@example.com';
$subject = 'Projektupdate';
$message = "Hallo zusammen,\r\n\r\nHier das aktuelle Projektupdate.\r\n\r\nBeste Grüße";
$headers = "From: projektleiter@example.com\r\nContent-Type: text/plain; charset=UTF-8";
$cc = 'kollege@example.com';
$bcc = 'archiv@example.com';
$reply_to = 'antwort@example.com';
$result = imap_mail($to, $subject, $message, $headers, $cc, $bcc, $reply_to);
if ($result) {
echo 'E-Mail mit CC, BCC und Reply-To wurde gesendet.';
} else {
echo 'Fehler beim Senden.';
}
// Wichtig · Fallstricke
Sicherheit: Alle von Benutzern eingegebenen Werte, die in Header-Felder wie $to, $cc, $bcc oder $additional_headers einfließen, müssen sorgfältig validiert und bereinigt werden. Andernfalls besteht die Gefahr von E-Mail-Header-Injection: Ein Angreifer könnte durch Zeilenumbrüche (\r\n) zusätzliche Header oder gar weitere Empfänger einschleusen (sog. Mail Injection).
Deprecation: Die IMAP-Erweiterung (ext/imap) wurde in PHP 8.4 als deprecated markiert und wird in einer zukünftigen PHP-Version entfernt. Es wird empfohlen, auf alternative Bibliotheken wie PHPMailer oder Symfony Mailer umzusteigen.
Die Funktion imap_mail() benötigt die IMAP-Erweiterung, auch wenn sie selbst keine IMAP-Verbindung aufbaut. Ohne installierte ext/imap steht sie nicht zur Verfügung.