If someone want to know number of unreaded messages just use imap_mailboxmsginfo
(PHP 4, PHP 5)
imap_num_recent — Gets the number of recent messages in current mailbox
Gets the number of recent messages in the current mailbox.
An IMAP stream returned by imap_open().
Returns the number of recent messages in the current mailbox, as an integer.
If you would like to skip the update of recent messages use the OP_READONLY flag when you open to check for new messages.
of course it doesnt. because "recent" does NOT mean "unseen" . they are different. for Maildir users, recent means messages found in the "new" subdir (which are moved to "cur" on the first opening of the Inbox). "unseen" are the messages you guys probably want (messages which have never been read).
The num_recent value does all the work it has to do. It returns only a number if the mail is not touched any time before.