Signatur
Beschreibung
imap_scanmailbox ist ein Alias der Funktion imap_listscan und verhält sich identisch zu dieser. Sie durchsucht den IMAP-Server nach Mailboxen, deren Name dem angegebenen Muster ($pattern) entspricht und deren Inhalt den angegebenen Suchtext ($content) enthält.
Die Funktion gibt ein Array von Mailbox-Namen zurück, die beide Kriterien erfüllen. Der Parameter $reference gibt dabei den Basis-Pfad oder Server-Kontext an, $pattern definiert ein Wildcard-Suchmuster (z. B. % für eine Ebene oder * für alle Ebenen), und $content filtert zusätzlich nach Mailboxen, die einen bestimmten Text enthalten.
Da es sich um einen Alias handelt, wird in neuem Code die direkte Verwendung von imap_listscan empfohlen. Aliase können in zukünftigen PHP-Versionen entfernt werden, weshalb imap_listscan die stabilere Wahl ist.
Die IMAP-Erweiterung selbst wurde in PHP 8.4 als veraltet markiert (deprecated). Für neue Projekte sollten moderne Alternativen wie die Horde_Imap_Client- oder php-imap-Bibliothek in Betracht gezogen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $imap Pflicht | IMAP\Connection | Eine aktive IMAP-Verbindungsinstanz, die mit imap_open erstellt wurde (vor PHP 8.1 eine Ressource vom Typ resource). |
|
| $reference Pflicht | string | Der Basis-Referenzpfad, meist der Server-String im Format {imap.example.com}, von dem aus die Suche beginnt. |
|
| $pattern Pflicht | string | Suchmuster für Mailbox-Namen. * steht für beliebig viele Zeichen (auch über Trennzeichen hinweg), % steht für beliebig viele Zeichen innerhalb einer Hierarchieebene. |
|
| $content Pflicht | string | Filtertext, nach dem im Inhalt der Mailbox gesucht wird. Nur Mailboxen, die diesen Text enthalten, werden zurückgegeben. |
Rückgabewert
false zurückgegeben.Beispiele
Mailboxen nach Inhalt durchsuchen
<?php
$imap = imap_open('{imap.example.com:143}', 'benutzer@example.com', 'geheim');
if ($imap === false) {
die('Verbindung fehlgeschlagen: ' . imap_last_error());
}
// Alle Mailboxen suchen, die "Projekt" im Namen und "wichtig" im Inhalt haben
$mailboxen = imap_scanmailbox($imap, '{imap.example.com}', '*Projekt*', 'wichtig');
if ($mailboxen !== false && count($mailboxen) > 0) {
foreach ($mailboxen as $mailbox) {
echo 'Gefunden: ' . $mailbox . PHP_EOL;
}
} else {
echo 'Keine passenden Mailboxen gefunden.' . PHP_EOL;
}
imap_close($imap);
Alle Mailboxen einer Hierarchieebene auflisten
<?php
$imap = imap_open('{imap.example.com:143}INBOX', 'benutzer@example.com', 'geheim');
if ($imap === false) {
die('Fehler: ' . imap_last_error());
}
// Nur direkte Unterordner von INBOX (eine Ebene, daher "%"), mit leerem Inhaltsfilter
$mailboxen = imap_scanmailbox($imap, '{imap.example.com}INBOX', '%', '');
if ($mailboxen !== false) {
echo 'Gefundene Mailboxen: ' . count($mailboxen) . PHP_EOL;
foreach ($mailboxen as $mb) {
echo ' - ' . $mb . PHP_EOL;
}
}
imap_close($imap);
// Wichtig · Fallstricke
Deprecated (PHP 8.4): Die gesamte IMAP-Erweiterung wurde in PHP 8.4 als veraltet markiert und soll in einer zukünftigen Version entfernt werden. Für neue Projekte sollten alternative Bibliotheken verwendet werden.
Alias: Da imap_scanmailbox ein Alias von imap_listscan ist, wird empfohlen, direkt imap_listscan zu verwenden. Aliase bieten keine Garantie auf Langzeitstabilität in PHP.
Verbindungstyp: Ab PHP 8.1 erwartet die Funktion ein Objekt vom Typ IMAP\Connection statt einer einfachen Ressource. Älterer Code muss entsprechend angepasst werden.