php教程

imap_mailboxmsginfo

(PHP 4, PHP 5, PHP 7)

imap_mailboxmsginfoGet information about the current mailbox

说明

imap_mailboxmsginfo ( resource $imap_stream ) : object

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:

Mailbox 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);

?>

User Contributed Notes

workshop200 dot com at gmail dot com 29-Jan-2018 09:55
If you need to get only time for the mailbox you should go with imap_check()
phrank 15-Mar-2010 05:32
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.
Maxg 30-Aug-2004 02:41
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)
m at tacker dot org 12-Mar-2003 01:55
The runtime difference between imap_status and imap_mailboxmsginfo is very significant on large mailboxes

<?php

/** opening connection to a
   * mailbox with 3987 messages
   * and retrive status information **/
$mbox = imap_open ('{mail.somwhere.com:110}', $user, $password);

$mbox_info = imap_status($mbox, '{mail.somwhere.com:110}INBOX', SA_MESSAGES);
/** took 11.05 seconds **/

$mbox_info = imap_mailboxmsginfo($mbox);
/** took 6 minutes 5.382 seconds **/

?>
js at jerntorget dot se, ej at jerntorget dot se 20-Sep-2002 07:29
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);
}
stephane-wantiez at tiscalinet dot be 11-Aug-2002 01:13
imap_get_quota need you to be the admin of the mail server !

CopyRight © 2008-2022 verySource.Com All Rights reserved. 京ICP备17048824号-1 京公网安备:11010502034788