Start · Sprachen · PHP · Referenz · imap_mail

imap_mail

Funktion

Sendet eine E-Mail-Nachricht über die IMAP-Erweiterung.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_mail(string $to, string $subject, string $message, ?string $additional_headers = null, ?string $cc = null, ?string $bcc = null, ?string $reply_to = null): bool

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

Typ
bool
Beschreibung
Gibt 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 wurde erfolgreich übergeben.

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.';
}
E-Mail mit CC, BCC und Reply-To wurde gesendet.

// 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.