PHP 4, PHP 5, PHP 7, PHP 8
imap_search - This function returns an array of messages matching the given search criteria
Code Examples

     [int$flags = SE_FREE],
     [string$charset = ""]
): array|false

This function performs a search on the mailbox currently opened in the given IMAP stream.

For example, to match all unanswered messages sent by Mom, you'd use: "UNANSWERED FROM mom". Searches appear to be case insensitive. This list of criteria is from a reading of the UW c-client source code and may be incomplete or inaccurate (see also RFC1176, section "tag SEARCH search_criteria").



An IMAP\Connection instance.


A string, delimited by spaces, in which the following keywords are allowed. Any multi-word arguments (e.g. FROM "joey smith") must be quoted. Results will match all criteria entries.

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


Valid values for flags are SE_UID, which causes the returned array to contain UIDs instead of messages sequence numbers.


MIME character set to use when searching strings.

Return Values

Returns an array of message numbers or UIDs.

Return false if it does not understand the search criteria or no messages have been found.


Version Description
8.1.0 The imap parameter expects an IMAP\Connection instance now; previously, a resource was expected.

Related Functions

Example of imap_search

Show all examples for imap_search

PHP Version:

Function imap_search:

IMAP, POP3 and NNTP Functions

Most used PHP functions