I have PHP script that fetch messages from a mailbox. I use the imap_search function:
$emails = imap_search($mbox, 'UNSEEN');
Is there a way to limit the number of returned messages. Right now on huge mailboxes i get like 5000 messages. I want only the top 20 ordered by date.
Is there a way to do that?
Thanks.
The imap_search function has a CRITERIA attribute you can use to limit the messages in a number of ways:
ALL – return all messages matching the rest of the criteria
ANSWERED – match messages with the \ANSWERED flag set
BCC “string” – match messages with “string” in the Bcc: field
BEFORE “date” – match messages with Date: before “date”
BODY “string” – match messages with “string” in the body of the message
CC “string” – match messages with “string” in the Cc: field
DELETED – match deleted messages
FLAGGED – match messages with the \FLAGGED (sometimes referred to as Important or Urgent) flag set
FROM “string” – match messages with “string” in the From: field
KEYWORD “string” – match messages with “string” as a keyword
NEW – match new messages
OLD – match old messages
ON “date” – match messages with Date: matching “date”
RECENT – match messages with the \RECENT flag set
SEEN – match messages that have been read (the \SEEN flag is set)
SINCE “date” – match messages with Date: after “date”
SUBJECT “string” – match messages with “string” in the Subject:
TEXT “string” – match messages with text “string”
TO “string” – match messages with “string” in the To :
UNANSWERED – match messages that have not been answered
UNDELETED – match messages that are not deleted
UNFLAGGED – match messages that are not flagged
UNKEYWORD “string” – match messages that do not have the keyword “string”
UNSEEN – match messages which have not been read yet