(PHP 4, PHP 5, PHP 7, PHP 8)
imap_status — Получает информацию по статусу почтового ящика
Возвращает информацию по статусу заданного в параметре mailbox ящика.
imapmailboxИмя почтового ящика, более подробно смотрите в описании imap_open()
Передача в этот параметр непроверенных данных небезопасна, если включили директиву imap.enable_insecure_rsh.
flagsДопустимые опции:
SA_MESSAGES - установить
$status->messages, равным количеству писем в ящике
SA_RECENT - установить
$status->recent, равным количеству новых писем
SA_UNSEEN - установить
$status->unseen, равным количеству непрочитанных писем
SA_UIDNEXT - установить
$status->uidnext равным следующему uid, который будет
использован в ящике
SA_UIDVALIDITY - установить
$status->uidvalidity в значение константы, которая меняется,
когда UID для почтового ящика больше не могут быть действительным
SA_ALL - использовать все перечисленные опции
Функция возвращает объект, содержащий информацию по статусу или false , если возникла ошибка.
Объект имеет следующие свойства: messages,
recent, unseen,
uidnext и uidvalidity.
flags также установлен, он содержит битовую маску которая может
быть проверена с помощью перечисленных выше констант.
| Версия | Описание |
|---|---|
| 8.1.0 |
Параметр imap теперь принимает объект IMAP\Connection ;
раньше параметр ждал ресурс (resource ) imap.
|
Пример #1 Пример использования imap_status()
<?php
$mbox = imap_open("{imap.example.com}", "username", "password", OP_HALFOPEN)
or die("не удалось подключиться: " . imap_last_error());
$status = imap_status($mbox, "{imap.example.org}INBOX", SA_ALL);
if ($status) {
echo "Сообщения: " . $status->messages . "<br />\n";
echo "Последние: " . $status->recent . "<br />\n";
echo "Непросмотренные: " . $status->unseen . "<br />\n";
echo "UIDnext: " . $status->uidnext . "<br />\n";
echo "UIDvalidity:" . $status->uidvalidity . "<br />\n";
} else {
echo "imap_status failed: " . imap_last_error() . "\n";
}
imap_close($mbox);
?>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;
}
?>