Signatur
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
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);
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);
// 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.