Start · Sprachen · PHP · Referenz · imap_get_quota

imap_get_quota

Funktion

Gibt die Quota-Einstellungen und aktuelle Nutzungsstatistik eines IMAP-Postfachs zurück.

seit PHP 4.0.5 Kategorie: http

Signatur

imap_get_quota(IMAP\Connection $imap, string $quota_root): array|false

Beschreibung

imap_get_quota() ruft die Quota-Informationen eines IMAP-Postfachs ab. Die Funktion setzt einen IMAP-Server voraus, der das IMAP QUOTA-Extension-Protokoll (RFC 2087) unterstützt. Damit lässt sich ermitteln, wie viel Speicherplatz einem Postfach zugewiesen wurde und wie viel davon bereits belegt ist.

Der Rückgabewert ist ein assoziatives Array, dessen Schlüssel die Ressourcentypen repräsentieren (in der Regel STORAGE für den Speicherplatz). Jeder Eintrag enthält die Unter-Schlüssel usage (aktuell belegte Speichereinheiten) und limit (maximales Kontingent), wobei die Einheiten in Kilobytes (KB) angegeben werden.

Diese Funktion ist besonders nützlich für Webmailer-Anwendungen oder Verwaltungsoberflächen, die dem Benutzer anzeigen sollen, wie voll sein Postfach ist, oder die automatisch warnen sollen, wenn ein bestimmter Füllstand überschritten wird.

Hinweis: Diese Funktion kann nur verwendet werden, wenn PHP mit der IMAP-Erweiterung kompiliert wurde (--with-imap) und der IMAP-Server die QUOTA-Erweiterung unterstützt. Andernfalls gibt sie false zurück.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine gültige IMAP-Verbindungsinstanz, die zuvor mit imap_open() geöffnet wurde.
$quota_root Pflicht string Der Quota-Wurzelname des Postfachs. In der Regel user.benutzername oder einfach INBOX, abhängig vom verwendeten IMAP-Server.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array zurück. Der Schlüssel STORAGE enthält ein weiteres Array mit den Schlüsseln usage (aktuell belegter Speicher in KB) und limit (maximales Kontingent in KB). Weitere Ressourcentypen wie MESSAGE sind möglich, wenn der Server sie meldet. Gibt false zurück, wenn ein Fehler auftritt oder der Server die QUOTA-Erweiterung nicht unterstützt.

Beispiele

Quota eines Postfachs auslesen und Auslastung berechnen

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

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

$quota = imap_get_quota($imap, 'INBOX');

if ($quota === false) {
    echo 'Quota-Informationen konnten nicht abgerufen werden.' . PHP_EOL;
} else {
    $usage = $quota['STORAGE']['usage'];  // in KB
    $limit = $quota['STORAGE']['limit'];  // in KB
    $prozent = ($limit > 0) ? round(($usage / $limit) * 100, 2) : 0;

    echo "Belegter Speicher: {$usage} KB" . PHP_EOL;
    echo "Maximales Kontingent: {$limit} KB" . PHP_EOL;
    echo "Auslastung: {$prozent}%" . PHP_EOL;
}

imap_close($imap);
Belegter Speicher: 15360 KB Maximales Kontingent: 102400 KB Auslastung: 15%

Warnung ausgeben bei hoher Postfachauslastung

<?php
$imap = imap_open('{mail.example.com:993/imap/ssl}INBOX', 'benutzer@example.com', 'passwort');

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

$quota = imap_get_quota($imap, 'user.benutzer');

if (is_array($quota) && isset($quota['STORAGE'])) {
    $usage = $quota['STORAGE']['usage'];
    $limit = $quota['STORAGE']['limit'];
    $auslastung = ($limit > 0) ? ($usage / $limit) * 100 : 0;

    if ($auslastung >= 90) {
        echo 'WARNUNG: Ihr Postfach ist zu ' . round($auslastung, 1) . '% voll. Bitte löschen Sie alte E-Mails.' . PHP_EOL;
    } elseif ($auslastung >= 75) {
        echo 'HINWEIS: Ihr Postfach ist zu ' . round($auslastung, 1) . '% ausgelastet.' . PHP_EOL;
    } else {
        echo 'Postfach-Auslastung: ' . round($auslastung, 1) . '% — alles in Ordnung.' . PHP_EOL;
    }
} else {
    echo 'Keine Quota-Daten verfügbar.' . PHP_EOL;
}

imap_close($imap);
WARNUNG: Ihr Postfach ist zu 92.3% voll. Bitte löschen Sie alte E-Mails.

// Wichtig · Fallstricke

Serverkompatibilität: Nicht alle IMAP-Server unterstützen die QUOTA-Erweiterung (RFC 2087). Dovecot und Cyrus IMAP unterstützen sie in der Regel, während manche einfachen IMAP-Server sie nicht implementieren. Überprüfen Sie die Serverunterstützung, bevor Sie sich auf diese Funktion verlassen.

Rechte: Normale Benutzer können in der Regel nur die Quota ihres eigenen Postfachs abfragen. Für das Abfragen der Quota anderer Benutzer (z. B. als Administrator) sollte stattdessen imap_get_quotaroot() verwendet werden.

PHP 8.1+: Ab PHP 8.1 wurde der Typ des $imap-Parameters von resource auf IMAP\Connection geändert. Älterer Code, der eine resource-Variable übergibt, muss entsprechend angepasst werden.

Einheiten: Die Werte usage und limit werden in Kilobytes (KB) gemeldet, nicht in Bytes. Für die Anzeige in MB oder GB muss entsprechend umgerechnet werden ($kb / 1024 für MB).