imap_mailboxmsginfo

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

imap_mailboxmsginfo获取有关当前邮箱的信息

描述

imap_mailboxmsginfo(IMAP\Connection $imap): stdClass

检查服务器上当前邮箱的状态。它类似于 imap_status(),但还会将邮箱中所有邮件的大小加起来,这需要一些额外的执行时间。

参数

imap

一个 IMAP\Connection 实例。

返回值

返回一个包含以下属性的对象信息

邮箱属性
日期 最后更改的日期(当前日期时间)
驱动程序 驱动程序
邮箱 邮箱的名称
Nmsgs 邮件数量
最近 最近邮件的数量
未读 未读邮件的数量
已删除 已删除邮件的数量
大小 邮箱大小

变更日志

版本 描述
8.1.0 现在 imap 参数期望一个 IMAP\Connection 实例;以前,期望一个有效的 imap 资源

范例

示例 #1 imap_mailboxmsginfo() 示例

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

?>

添加注释

用户贡献的注释 6 个注释

phrank
14 年前
imap_mailboxmsginfo() 与 imap_status() 不相似。如果你比较原型,你会很容易发现这一点

object imap_mailboxmsginfo ( resource $imap_stream )

object imap_status ( resource $imap_stream , string $mailbox , int $options )

一个显著的差异是 imap_mailboxmsginfo() 从流资源中获取邮箱名称,而 imap_status() 需要任何邮箱名称作为第二个参数。
js at jerntorget dot se, ej at jerntorget dot se
21 年前
然后使用 imap_get_quotaroot().....

或者使用这个(适用于 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);
}
m at tacker dot org
21 年前
imap_status 和 imap_mailboxmsginfo 之间的运行时差异在大型邮箱上非常显著

<?php

/** 打开连接到一个
* 包含 3987 条邮件的邮箱
* 并检索状态信息 **/
$mbox = imap_open ('{mail.somwhere.com:110}', $user, $password);

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

$mbox_info = imap_mailboxmsginfo($mbox);
/** 耗时 6 分钟 5.382 秒 **/

?>
workshop200 dot com at gmail dot com
6 年前
如果只需要获取邮箱时间,应该使用 imap_check()
Maxg
19 年前
关于 imap_mailboxmsginfo() 的缓慢:如果在 IMAP 连接上使用,我检查了我的邮件服务器日志,发现它发送 FETCH 命令来检索邮箱中每条邮件的标头...
所以,如果你在一个文件夹中有 400 条邮件,这个函数将会非常慢(在一个本地服务器上超过 1.5 秒!)...

我强烈建议你使用 imap_status() 代替,它只发送一个 < STATUS "Mailbox/Name" (MESSAGES UNSEEN) > 并且实际上要快得多(至少对于 IMAP 是这样,但对于 POP3 来说可能不适用)
stephane-wantiez at tiscalinet dot be
22 年前
imap_get_quota 需要你是邮件服务器的管理员!
To Top