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