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