Signatur
Beschreibung
imap_get_quotaroot() ruft die Quota-Informationen für ein angegebenes IMAP-Postfach ab. Im Gegensatz zu imap_get_quota(), das den Quota-Root direkt als Parameter erwartet, ermittelt diese Funktion selbst den zugehörigen Quota-Root aus dem Postfachnamen und gibt alle damit verbundenen Quota-Informationen zurück.
Die Funktion gibt ein assoziatives Array zurück, das für jeden Quota-Root einen Eintrag enthält. Jeder Eintrag beinhaltet den Namen der Ressource (STORAGE), den aktuell belegten Speicherplatz (usage) sowie das definierte Limit (limit), jeweils in Kilobyte (KB).
Diese Funktion ist besonders nützlich für Webmail-Applikationen oder Administrationsoberflächen, die Benutzern oder Administratoren den aktuellen Speicherverbrauch und das Speicherlimit eines Postfachs anzeigen sollen. Sie erfordert, dass der IMAP-Server die IMAP4 QUOTA-Erweiterung (RFC 2087) unterstützt.
Zu beachten ist, dass die Funktion nur dann korrekte Ergebnisse liefert, wenn die IMAP-Verbindung mit ausreichenden Berechtigungen aufgebaut wurde – in der Regel als Administrator oder als der Eigentümer des Postfachs.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $imap Pflicht | IMAP\Connection | Eine aktive IMAP-Verbindungsinstanz, die zuvor mit imap_open() erzeugt wurde. Ab PHP 8.1 ist dies ein IMAP\Connection-Objekt (zuvor eine Ressource). |
|
| $mailbox Pflicht | string | Der vollständige IMAP-Postfachname im Format {server}postfachname, z. B. {imap.example.com}INBOX. Der Serverpräfix ist zwingend erforderlich. |
Rückgabewert
STORAGE) mit den Schlüsseln usage (aktuell genutzter Speicher in KB) und limit (maximaler Speicher in KB). Im Fehlerfall wird false zurückgegeben.Beispiele
Quota-Nutzung für INBOX abrufen und anzeigen
<?php
$imap = imap_open('{imap.example.com:143}INBOX', 'benutzer@example.com', 'geheimespasswort');
if (!$imap) {
die('Verbindung fehlgeschlagen: ' . imap_last_error());
}
$quotaRoot = imap_get_quotaroot($imap, 'INBOX');
if ($quotaRoot === false) {
echo 'Quota-Informationen konnten nicht abgerufen werden.' . PHP_EOL;
} else {
foreach ($quotaRoot as $root => $resources) {
echo "Quota-Root: " . $root . PHP_EOL;
foreach ($resources as $resourceName => $info) {
if (isset($info['usage'], $info['limit'])) {
$usagePercent = round(($info['usage'] / $info['limit']) * 100, 2);
echo " Ressource: " . $resourceName . PHP_EOL;
echo " Genutzt: " . $info['usage'] . " KB" . PHP_EOL;
echo " Limit: " . $info['limit'] . " KB" . PHP_EOL;
echo " Auslastung: " . $usagePercent . "%" . PHP_EOL;
}
}
}
}
imap_close($imap);
Quota-Warnung bei hoher Auslastung ausgeben
<?php
$imap = imap_open('{imap.example.com:143}INBOX', 'benutzer@example.com', 'geheimespasswort');
if (!$imap) {
die('Verbindung fehlgeschlagen.');
}
$quotaInfo = imap_get_quotaroot($imap, 'INBOX');
if (is_array($quotaInfo)) {
foreach ($quotaInfo as $root => $resources) {
if (isset($resources['STORAGE'])) {
$usage = $resources['STORAGE']['usage'];
$limit = $resources['STORAGE']['limit'];
$percent = ($limit > 0) ? ($usage / $limit) * 100 : 0;
if ($percent >= 90) {
echo "WARNUNG: Ihr Postfach ist zu " . round($percent, 1) . "% voll!\n";
echo "Bitte löschen Sie alte E-Mails, um Platz freizugeben.\n";
} else {
echo "Postfach-Auslastung: " . round($percent, 1) . "% – alles in Ordnung.\n";
}
}
}
}
imap_close($imap);
// Wichtig · Fallstricke
Serverunterstützung erforderlich: Der IMAP-Server muss die QUOTA-Erweiterung gemäß RFC 2087 unterstützen. Nicht alle IMAP-Server (z. B. ältere Exchange-Versionen) unterstützen diese Erweiterung. Bei fehlender Unterstützung gibt die Funktion false zurück.
Berechtigungen: Um die Quota-Informationen anderer Benutzer abzurufen, sind administrative IMAP-Berechtigungen notwendig. Ein normaler Benutzer kann in der Regel nur seine eigene Quota abfragen.
Einheit: Alle Werte (usage und limit) werden in Kilobyte (KB) angegeben, nicht in Bytes.
PHP 8.1: Ab PHP 8.1 wurde der Typ des $imap-Parameters von einer Ressource (resource) auf eine Instanz der Klasse IMAP\Connection geändert. Code, der eine Ressource erwartet, muss entsprechend angepasst werden.
IMAP-Erweiterung: Die IMAP-Funktionen erfordern, dass PHP mit der --with-imap-Option kompiliert wurde oder die php_imap-Extension geladen ist.