Start · Sprachen · PHP · Referenz · imap_scanmailbox

imap_scanmailbox

Funktion

Alias von <code>imap_listscan</code> — listet Mailboxen auf einem IMAP-Server, deren Namen dem Muster und Inhalt entsprechen.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_scanmailbox(IMAP\Connection $imap, string $reference, string $pattern, string $content): array|false

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

Typ
array|false
Beschreibung
Gibt ein Array mit den vollständigen Namen der gefundenen Mailboxen zurück. Bei einem Fehler oder wenn keine Mailbox gefunden wurde, wird 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);
Gefunden: {imap.example.com:143}INBOX.Projekt-Alpha Gefunden: {imap.example.com:143}INBOX.Projekt-Beta

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);
Gefundene Mailboxen: 3 - {imap.example.com:143}INBOX.Sent - {imap.example.com:143}INBOX.Drafts - {imap.example.com:143}INBOX.Trash

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