PHP Conference Kansai 2025

imap_status

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

imap_statusDevuelve la información de estado sobre un buzón de correo

Descripción

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

Devuelve la información de estado sobre el buzón de correo mailbox.

Parámetros

imap

An IMAP\Connection instance.

mailbox

El nombre del buzón de correo, ver la documentación de la función imap_open() para más detalles

Advertencia

El paso de datos no confiables a este parámetro es inseguro, a menos que imap.enable_insecure_rsh esté inhabilitado.

flags

Los flags válidos son:

  • SA_MESSAGES - establece el valor de $status->messages al número de mensajes en el buzón de correo.
  • SA_RECENT - establece el valor de $status->recent al número de mensajes recientes en el buzón de correo.
  • SA_UNSEEN - establece el valor de $status->unseen al número de mensajes no leídos en el buzón de correo.
  • SA_UIDNEXT - establece el valor de $status->uidnext al siguiente valor de uid que será utilizado.
  • SA_UIDVALIDITY - establece el valor de $status->uidvalidity a una constante, que cambia cuando el uid del buzón de correo ya no es válido.
  • SA_ALL - establece todos los valores anteriores.

Valores devueltos

Esta función devuelve un objeto que contiene la información de estado, o false en caso de error. El objeto tiene las siguientes propiedades: messages, recent, unseen, uidnext, y uidvalidity.

flags también está definido, que contiene una máscara con una de las constantes anteriores.

Historial de cambios

Versión Descripción
8.1.0 The imap parameter expects an IMAP\Connection instance now; previously, a valid imap recurso was expected.

Ejemplos

Ejemplo #1 Ejemplo con imap_status()

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

$status = imap_status($mbox, "{imap.example.org}INBOX", SA_ALL);
if (
$status) {
echo
"Mensajes : " . $status->messages . "<br />\n";
echo
"Reciente : " . $status->recent . "<br />\n";
echo
"No leído : " . $status->unseen . "<br />\n";
echo
"Próximo UID: " . $status->uidnext . "<br />\n";
echo
"Validez del UID: " . $status->uidvalidity . "<br />\n";
} else {
echo
"imap_status ha fallado : " . imap_last_error() . "\n";
}

imap_close($mbox);
?>

add a note

User Contributed Notes 1 note

up
2
mwwaygoo AT hotmail DOT com
12 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;
}
?>
To Top