PHP 8.3.4 Released!

imap_status

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_statusLiefert Statusinformationen zum angegebenen Postfach

Beschreibung

imap_status(IMAP\Connection $imap, string $mailbox, int $flags): stdClass|false

Gibt Statusinformationen zum Postfach mailbox zurück.

Parameter-Liste

imap

Eine IMAP\Connection-Instanz.

mailbox

Der Name des Postfachs, siehe imap_open() für weitere Informationen.

Warnung

Die Übergabe von nicht vertrauenswürdigen Daten an diesen Parameter ist unsicher,falls imap.enable_insecure_rsh nicht deaktiviert ist.

flags

Eine Bitmaske mit folgenden möglichen Werten:

  • SA_MESSAGES - setzt $status->messages auf die Anzahl der Nachrichten im Postfach
  • SA_RECENT - setzt $status->recent auf die Anzahl kürzlich eingetroffener Nachrichten im Postfach
  • SA_UNSEEN - setzt $status->unseen auf die Anzahl ungelesener (neuer) Nachrichten im Postfach
  • SA_UIDNEXT - setzt $status->uidnext auf die nächste diesem Postfach zugeteilte UID
  • SA_UIDVALIDITY - setzt $status->uidvalidity auf eine Konstante, die sich ändert, falls die UIDs im Postfach ihre Gültigkeit verloren haben könnten
  • SA_ALL - setzt alle Flags

Rückgabewerte

Diese Funktion gibt ein Objekt mit Statusinformationen zurück. Bei einem Fehler wird false zurückgegeben. Das Objekt hat die folgenden Eigenschaften: messages, recent, unseen, uidnext und uidvalidity.

flags wird ebenfalls gesetzt und enthält eine Bitmaske, mit der die tatsächlich zurückgegebenen Informationen mit Hilfe der oben beschriebenen Konstanten geprüft werden können.

Changelog

Version Beschreibung
8.1.0 Der Parameter imap erwartet nun eine IMAP\Connection-Instanz; vorher wurde eine gültige imap-Ressource erwartet.

Beispiele

Beispiel #1 imap_status()-Beispiel

<?php
$mbox
= imap_open("{imap.example.com}", "username", "password", OP_HALFOPEN)
or die(
"Kann keine Verbindung aufbauen: " . imap_last_error());

$status = imap_status($mbox, "{imap.example.org}INBOX", SA_ALL);
if (
$status) {
echo
"Nachrichten: " . $status->messages . "<br />\n";
echo
"Neueste: " . $status->recent . "<br />\n";
echo
"Ungelesen: " . $status->unseen . "<br />\n";
echo
"UIDnext: " . $status->uidnext . "<br />\n";
echo
"UIDvalidity:" . $status->uidvalidity . "<br />\n";
} else {
echo
"imap_status schlug fehl: " . imap_last_error() . "\n";
}

imap_close($mbox);
?>

add a note

User Contributed Notes 3 notes

up
1
jille at DIESPAMMERShexon dot cx
16 years ago
In 'reply' to my previous post;
I`m not sure of that anymore
I think this trick works,
but the rest of my script just sucks..

Conclusion:
You can get the last UID by using status->uidnext-1
BUT: This is not a good way, if another message is added after your append and before your status; you are screwed
up
2
mwwaygoo AT hotmail DOT com
11 years ago
I had issues with imap_status not working correctly, while other imap functions seemed okay. I always got the ['flags']=0 response. No notes here and Google searching suggests it doesn't working properly with Exchange, so I wrote a little workaround, to at least get some information.

<?php
function my_imap_status($stream, $mailbox='', $info=SA_ALL)
{
// get current mailbox name (and info)
$curr_obj=imap_check($stream);
if(!
$curr_obj) return false;

// if request if for current mailbox then just return it
if( (empty($mailbox)) || ($mailbox==$curr_obj->Mailbox) ) return $curr_obj;

// get current mailbox
$current_mailbox=$curr_obj->Mailbox;

//switch to new mailbox
if(!imap_reopen($stream, $mailbox)) return false;

// get info
$obj=imap_check($stream);

// switch back to original mailbox
imap_reopen($stream, $current_mailbox);

//return info
return $obj;
}
?>
up
-2
razonklnbd at hotmail dot com
16 years ago
another tips is to get only total number of message and recent message

$imap_obj = imap_status($mbox, '{mail.mysrv.com:143/imap}INBOX', SA_MESSAGES+SA_RECENT);
echo('<pre>'); var_dump($imap_obj); echo('</pre>');
To Top