imap_status

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

imap_statusRetourne les informations de statut sur une boîte aux lettres

Description

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

Retourne les informations de statut sur la boîte aux lettres mailbox.

Liste de paramètres

imap

Une instance de IMAP\Connection.

mailbox

Le nom de la boîte aux lettres, voir la documentation de la fonction imap_open() pour plus de détails

Avertissement

Passer des données qui ne sont pas digne de confiance à ce paramètre est dangereux, sauf si, imap.enable_insecure_rsh est désactivé.

flags

Les drapeaux valides sont :

  • SA_MESSAGES - met la valeur de $status->messages au nombre de messages dans la boîte aux lettres.
  • SA_RECENT - met la valeur de $status->recent au nombre de messages récents dans la boîte aux lettres.
  • SA_UNSEEN - met la valeur de $status->unseen au nombre de messages non lus dans la boîte aux lettres.
  • SA_UIDNEXT - met la valeur de $status->uidnext à la prochaine valeur d'uid qui sera utilisée.
  • SA_UIDVALIDITY - met la valeur de $status->uidvalidity à une constante, qui change lorsque l'uid de la boîte aux lettres n'est plus valide.
  • SA_ALL - fixe toutes les valeurs précédentes.

Valeurs de retour

Cette fonction retourne un objet contenant les informations sur le statut, ou false si une erreur survient. L'objet a les propriétés suivantes : messages, recent, unseen, uidnext, et uidvalidity.

flags est également défini, qui contient un masque contenant une des constantes ci-dessus.

Historique

Version Description
8.1.0 La paramètre imap attend désormais une instance de IMAP\Connection ; auparavant, une ressource imap était attendue.

Exemples

Exemple #1 Exemple avec imap_status()

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

$status = imap_status($mbox, "{imap.example.org}INBOX", SA_ALL);
if (
$status) {
echo
"Messages : " . $status->messages . "<br />\n";
echo
"Récent : " . $status->recent . "<br />\n";
echo
"Non lu : " . $status->unseen . "<br />\n";
echo
"Prochain UID: " . $status->uidnext . "<br />\n";
echo
"Validité de l'UID:" . $status->uidvalidity . "<br />\n";
} else {
echo
"imap_status a échoué : " . imap_last_error() . "\n";
}

imap_close($mbox);
?>

add a note 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