©
本文档使用 PHP中文网手册 发布
(PHP 4, PHP 5, PHP 7)
imap_mailboxmsginfo — Get information about the current mailbox
$imap_stream
)Checks the current mailbox status on the server. It is similar to imap_status() , but will additionally sum up the size of all messages in the mailbox, which will take some additional time to execute.
imap_stream
由 imap_open() 返回的 IMAP 流。
Returns the information in an object with following properties:
Date | date of last change (current datetime) |
Driver | driver |
Mailbox | name of the mailbox |
Nmsgs | number of messages |
Recent | number of recent messages |
Unread | number of unread messages |
Deleted | number of deleted messages |
Size | mailbox size |
Returns FALSE
on failure.
Example #1 imap_mailboxmsginfo() example
<?php
$mbox = imap_open ( "{imap.example.org}INBOX" , "username" , "password" )
or die( "can't connect: " . imap_last_error ());
$check = imap_mailboxmsginfo ( $mbox );
if ( $check ) {
echo "Date: " . $check -> Date . "<br />\n" ;
echo "Driver: " . $check -> Driver . "<br />\n" ;
echo "Mailbox: " . $check -> Mailbox . "<br />\n" ;
echo "Messages: " . $check -> Nmsgs . "<br />\n" ;
echo "Recent: " . $check -> Recent . "<br />\n" ;
echo "Unread: " . $check -> Unread . "<br />\n" ;
echo "Deleted: " . $check -> Deleted . "<br />\n" ;
echo "Size: " . $check -> Size . "<br />\n" ;
} else {
echo "imap_mailboxmsginfo() failed: " . imap_last_error () . "<br />\n" ;
}
imap_close ( $mbox );
?>
[#1] phrank [2010-03-15 05:32:37]
imap_mailboxmsginfo() is NOT similar to imap_status(). You will easily recognize that if you compare the prototypes:
object imap_mailboxmsginfo ( resource $imap_stream )
object imap_status ( resource $imap_stream , string $mailbox , int $options )
One SIGNIFICANT difference is that imap_mailboxmsginfo() gets the mailbox name from the stream resource and imap_status() requires any mailbox name as second argument.
[#2] Maxg [2004-08-30 14:41:54]
About the slowness of imap_mailboxmsginfo() : if used on an IMAP connection, I did checked my mailserver logs and it appeared to send FETCH commands to retrieve the headers of EVERY messages of the mailbox ...
So, if you have, let's say, 400 messages in a folder, the function will be very slow (>1.5 sec on a local server !) ...
I strongly advise you to use imap_status() instead, which only sends one < STATUS "Mailbox/Name" (MESSAGES UNSEEN) > and is actually a lot faster (at least with IMAP, but that's maybe not true with POP3)
[#3] m at tacker dot org [2003-03-12 01:55:17]
The runtime difference between imap_status and imap_mailboxmsginfo is very significant on large mailboxes
<?php
$mbox = imap_open ('{mail.somwhere.com:110}', $user, $password);
$mbox_info = imap_status($mbox, '{mail.somwhere.com:110}INBOX', SA_MESSAGES);
$mbox_info = imap_mailboxmsginfo($mbox);
?>
[#4] til_roque at yahoo dot com [2003-03-03 14:13:21]
the 'recent' of this function returns the same as 'UIDvalidity' from imap_status() ... makes no sense (or dos it?)
[#5] js at jerntorget dot se, ej at jerntorget dot se [2002-09-20 07:29:08]
then use imap_get_quotaroot().....
or use this one (works with qmail):
function get_quotaroot() {
if(!$socket = @fsockopen("your server", your port);
return false;
fgets($socket, 1024);
fputs($socket, "a001 LOGIN ".$username." ".$password."\n");
fgets($socket, 1024);
fputs($socket, "a002 GETQUOTAROOT INBOX\n");
fgets($socket, 1024);
$result = fgets($socket, 1024);
fputs($socket, "a003 LOGOUT\n");
fgets($socket, 1024);
sscanf($result, '* QUOTA "ROOT" (STORAGE %d %d MESSAGE %d %d', $usedSize, $maxSize, $usedNum, $maxNum);
return array("usedSize" => $usedSize, "maxSize" => $maxSize, "usedNum" => $usedNum, "maxNum" => $maxNum);
}
[#6] stephane-wantiez at tiscalinet dot be [2002-08-11 13:13:21]
imap_get_quota need you to be the admin of the mail server !
[#7] dolce at koulikov dot cc [2002-01-12 22:57:18]
Don't lie... I've timed it, there is merely a time difference, besides it returns a lot of other useful info packed in an object!
[#8] whw at my169 dot com [2002-01-04 07:35:59]
It is very slow,so don't use it to get mailbox size,used imap_get_quota instead.