PHP 8.4.0 RC4 available for testing

imap_mailboxmsginfo

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

imap_mailboxmsginfo現在のメールボックスに関する情報を得る

説明

imap_mailboxmsginfo(IMAP\Connection $imap): stdClass

サーバーにおける現在のメールボックスのステータスを調べます。この関数は imap_status() に似ていますが、 メールボックス内の全メッセージのサイズを合計します。このため、 実行時間が幾分余計にかかります。

パラメータ

imap

IMAP\Connection クラスのインスタンス。

戻り値

以下のプロパティを有するオブジェクトを返します。

Mailbox のプロパティ
Date 最終変更日 (現在の日付時刻)
Driver ドライバ
Mailbox メールボックスの名前
Nmsgs メッセージ数
Recent 最近のメッセージの数
Unread 未読のメッセージの数
Deleted 削除されたメッセージの数
Size メールボックスのサイズ

変更履歴

バージョン 説明
8.1.0 引数 imap は、IMAP\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、有効な imap リソース が期待されていました。

例1 imap_mailboxmsginfo() example

<?php

$mbox
= imap_open("{imap.example.org}INBOX", "username", "password")
or die(
"接続できません: " . 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() に失敗: " . imap_last_error() . "<br />\n";
}

imap_close($mbox);

?>

add a note

User Contributed Notes 6 notes

up
2
phrank
14 years ago
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.
up
2
js at jerntorget dot se, ej at jerntorget dot se
22 years ago
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);
}
up
2
Maxg
20 years ago
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)
up
1
m at tacker dot org
21 years ago
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 **/

?>
up
0
workshop200 dot com at gmail dot com
6 years ago
If you need to get only time for the mailbox you should go with imap_check()
up
0
stephane-wantiez at tiscalinet dot be
22 years ago
imap_get_quota need you to be the admin of the mail server !
To Top