Start · Sprachen · PHP · Referenz · imap_scan

imap_scan

Funktion

Alias von <code>imap_listscan</code> — gibt eine Liste von Postfächern zurück, deren Name dem Muster entspricht und die den gesuchten Inhalt enthalten.

seit PHP 4.0.0 Kategorie: http

Signatur

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

Beschreibung

imap_scan ist ein direkter Alias der Funktion imap_listscan. Sie durchsucht auf einem IMAP-Server alle Postfächer, deren Name zu $pattern passt, und filtert zusätzlich nach solchen, die den in $content angegebenen Text im Postfachnamen enthalten. Das Ergebnis ist ein Array mit den vollständigen Namen der gefundenen Postfächer.

Die Funktion ist nützlich, wenn gezielt bestimmte Mailboxen gesucht werden sollen – etwa alle Unterordner, die einen bestimmten Begriff im Namen tragen. Sie kombiniert so die Funktion der reinen Postfach-Auflistung mit einer einfachen Namenfilterung.

Da es sich um einen Alias handelt, ist das Verhalten identisch mit imap_listscan. Es empfiehlt sich, direkt imap_listscan zu verwenden, da Aliase in zukünftigen PHP-Versionen unter Umständen entfernt werden können.

Die IMAP-Erweiterung muss aktiviert sein (ext/imap). Ab PHP 8.1 ist die IMAP-Verbindung als Objekt vom Typ IMAP\Connection zu übergeben, zuvor war es eine Ressource.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine aktive IMAP-Verbindung, die mit imap_open geöffnet wurde.
$reference Pflicht string Der Referenzpfad (Basis-Pfad), von dem aus gesucht wird, z. B. {imap.example.com}.
$pattern Pflicht string Suchmuster für Postfachnamen. Wildcards: * für beliebig viele Zeichen, % für beliebig viele Zeichen außer dem Trennzeichen.
$content Pflicht string Zeichenkette, die im Postfachnamen enthalten sein muss. Postfächer, die diesen Text nicht enthalten, werden nicht zurückgegeben.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit den vollständigen Namen der gefundenen Postfächer zurück, oder false im Fehlerfall.

Beispiele

Postfächer mit bestimmtem Begriff im Namen auflisten

<?php
$imap = imap_open('{imap.example.com:143}INBOX', 'benutzer@example.com', 'geheimesPasswort');

if ($imap === false) {
    die('Verbindung fehlgeschlagen: ' . imap_last_error());
}

// Alle Postfächer suchen, die "Projekt" im Namen enthalten
$mailboxen = imap_scan($imap, '{imap.example.com}', '*', 'Projekt');

if ($mailboxen !== false) {
    foreach ($mailboxen as $mailbox) {
        echo $mailbox . PHP_EOL;
    }
} else {
    echo 'Keine Postfächer gefunden oder Fehler aufgetreten.';
}

imap_close($imap);
{imap.example.com}Projekt-Alpha {imap.example.com}Projekt-Beta {imap.example.com}INBOX.Projekt-Archiv

Alle Postfächer ohne Inhaltsfilter auflisten (leerer content-String)

<?php
$imap = imap_open('{imap.example.com:143}INBOX', 'benutzer@example.com', 'geheimesPasswort');

// Alle Postfächer unterhalb von INBOX auflisten (kein Inhaltsfilter)
$mailboxen = imap_scan($imap, '{imap.example.com}', 'INBOX.*', '');

if (is_array($mailboxen)) {
    echo 'Gefundene Unterordner: ' . count($mailboxen) . PHP_EOL;
    foreach ($mailboxen as $mb) {
        echo '  - ' . $mb . PHP_EOL;
    }
}

imap_close($imap);
Gefundene Unterordner: 3 - {imap.example.com}INBOX.Sent - {imap.example.com}INBOX.Drafts - {imap.example.com}INBOX.Trash

// Wichtig · Fallstricke

Alias-Hinweis: imap_scan ist ein Alias von imap_listscan. Es wird empfohlen, direkt imap_listscan zu verwenden, da Aliasfunktionen in zukünftigen PHP-Versionen möglicherweise entfernt werden.

Passwörter: Zugangsdaten sollten niemals im Quellcode hartkodiert werden. Verwende Umgebungsvariablen oder sichere Konfigurationsdateien außerhalb des Webroot.

Verbindungssicherheit: Nutze nach Möglichkeit SSL/TLS ({imap.example.com:993/ssl}), um die Übertragung von Zugangsdaten zu verschlüsseln.