Start · Sprachen · PHP · Referenz · imap_num_msg

imap_num_msg

Funktion

Liefert die Gesamtanzahl der Nachrichten im aktuell geöffneten IMAP-Postfach.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_num_msg(IMAP\Connection $imap): int|false

Beschreibung

imap_num_msg() gibt die Anzahl aller Nachrichten im Postfach zurück, das über die übergebene IMAP-Verbindung geöffnet wurde. Diese Zahl entspricht der Gesamtanzahl – unabhängig davon, ob Nachrichten gelesen oder ungelesen sind.

Die Funktion ist besonders nützlich, um vor dem Abrufen oder Verarbeiten von Nachrichten zu prüfen, wie viele Einträge vorhanden sind, und um daraufhin Schleifen oder Paginierungen entsprechend aufzubauen. Sie liefert keine Informationen über ungelesene oder gelöschte (aber noch nicht endgültig entfernte) Nachrichten – für solche Informationen eignet sich imap_status().

Bei Verbindungs- oder Kommunikationsfehlern gibt die Funktion false zurück. In diesem Fall lässt sich die Fehlerursache mit imap_last_error() ermitteln.

Ab PHP 8.1 ist der Parameter vom Typ IMAP\Connection statt der früher verwendeten Ressource vom Typ resource.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine aktive IMAP-Verbindungsinstanz, die zuvor mit imap_open() geöffnet wurde.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Anzahl der Nachrichten im geöffneten Postfach als int zurück. Bei einem Fehler wird false zurückgegeben.

Beispiele

Anzahl der Nachrichten im Posteingang ausgeben

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

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

$anzahl = imap_num_msg($imap);

if ($anzahl === false) {
    echo 'Fehler beim Abrufen der Nachrichtenanzahl.';
} else {
    echo 'Nachrichten im Posteingang: ' . $anzahl;
}

imap_close($imap);
Nachrichten im Posteingang: 42

Alle Nachrichten sequenziell verarbeiten

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

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

$anzahl = imap_num_msg($imap);

for ($i = 1; $i <= $anzahl; $i++) {
    $header = imap_headerinfo($imap, $i);
    echo 'Betreff: ' . $header->subject . PHP_EOL;
}

imap_close($imap);
Betreff: Willkommen! Betreff: Ihr Konto wurde aktiviert. ...

// Wichtig · Fallstricke

Hinweis zur Nummerierung: IMAP-Nachrichten werden ab dem Index 1 (nicht 0) nummeriert. Die Schleife muss also von 1 bis einschließlich imap_num_msg() laufen.

Gelöschte Nachrichten: Nachrichten, die mit imap_delete() als gelöscht markiert, aber noch nicht durch imap_expunge() endgültig entfernt wurden, werden weiterhin in der Gesamtanzahl mitgezählt.

Deprecation: Vor PHP 8.1 wurde eine Ressource vom Typ resource übergeben. Ab PHP 8.1 wird ausschließlich ein IMAP\Connection-Objekt akzeptiert.