Start · Sprachen · PHP · Referenz · imap_errors

imap_errors

Funktion

Gibt alle seit dem letzten Aufruf aufgetretenen IMAP-Fehlermeldungen als Array zurück und leert dabei den internen Fehlerspeicher.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_errors(): array|false

Beschreibung

imap_errors() liefert ein Array mit allen Fehlermeldungen, die seit dem letzten Aufruf dieser Funktion (oder seit dem Skriptstart) von der C-Client-IMAP-Bibliothek erzeugt wurden. Nach dem Aufruf wird der interne Fehlerspeicher geleert, sodass ein erneuter Aufruf nur neue Fehler zurückgibt.

Die Funktion ist nützlich, um nach IMAP-Operationen wie dem Verbindungsaufbau (imap_open()), dem Abrufen von Nachrichten oder dem Verschieben von E-Mails strukturiert nach Fehlern zu suchen und diese zu protokollieren oder dem Benutzer anzuzeigen.

Im Gegensatz zu imap_last_error(), das nur den zuletzt aufgetretenen Fehler zurückgibt, sammelt imap_errors() alle aufgetretenen Fehler seit der letzten Abfrage. Das ist besonders dann hilfreich, wenn mehrere IMAP-Operationen hintereinander ausgeführt werden und alle Fehlerzustände ausgewertet werden sollen.

Wenn keine Fehler vorliegen, gibt die Funktion false zurück. Ein Rückgabewert von false ist damit ein zuverlässiges Indiz dafür, dass keine Fehler aufgetreten sind.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein indiziertes Array mit allen aufgetretenen IMAP-Fehlermeldungen als Strings zurück. Sind keine Fehler aufgetreten, wird false zurückgegeben. Nach dem Aufruf wird der interne Fehlerspeicher geleert.

Beispiele

Fehler nach imap_open() auslesen und protokollieren

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

if ($mailbox === false) {
    $fehler = imap_errors();
    if ($fehler !== false) {
        echo "Folgende IMAP-Fehler sind aufgetreten:" . PHP_EOL;
        foreach ($fehler as $f) {
            echo '  - ' . $f . PHP_EOL;
        }
    } else {
        echo "Verbindung fehlgeschlagen, aber keine Fehlermeldungen verfügbar." . PHP_EOL;
    }
} else {
    echo "Verbindung erfolgreich hergestellt." . PHP_EOL;
    imap_close($mailbox);
}
Folgende IMAP-Fehler sind aufgetreten: - [AUTHENTICATIONFAILED] Authentication failed.

Fehler nach mehreren IMAP-Operationen sammeln

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

if ($mailbox) {
    // Mehrere Operationen ausführen
    imap_mail_move($mailbox, '1,2,3', 'Archiv');
    imap_expunge($mailbox);

    $fehler = imap_errors();
    if ($fehler !== false) {
        error_log('IMAP-Fehler aufgetreten: ' . implode(' | ', $fehler));
        echo "Es sind " . count($fehler) . " Fehler aufgetreten. Siehe Logdatei." . PHP_EOL;
    } else {
        echo "Alle Operationen erfolgreich abgeschlossen." . PHP_EOL;
    }

    imap_close($mailbox);
}
Alle Operationen erfolgreich abgeschlossen.

// Wichtig · Fallstricke

Wichtig: Nach jedem Aufruf von imap_errors() wird der interne Fehlerpuffer geleert. Wenn die Fehler mehrfach benötigt werden (z. B. für Logging und Anzeige), sollten sie zunächst in einer Variable gespeichert werden.

Die IMAP-Erweiterung wurde in PHP 8.4 als veraltet markiert (deprecated) und wird in einer zukünftigen PHP-Version entfernt. Als Alternative wird die Verwendung von IMAP-Bibliotheken über Composer empfohlen, z. B. ddeboer/imap.

Um unerwünschte PHP-Warnungen bei fehlgeschlagenen IMAP-Operationen zu unterdrücken, empfiehlt es sich, den @-Operator zu verwenden und stattdessen die Fehler über imap_errors() strukturiert auszuwerten.