This method supports unique IDs instead of message numbers. See
{@link ezcMailImapTransportOptions} for how to enable unique IDs
referencing.
See {@link http://www.faqs.org/rfcs/rfc1730.html} - 6.4.4. (or
{@link http://www.faqs.org/rfcs/rfc1730.html} - 6.4.4.) for criterias
which can be used for searching. The criterias can be combined in the
same search string (separate the criterias with spaces).
If $criteria is null or empty then it will default to 'ALL' (returns all
messages in the mailbox).
Before calling this method, a connection to the IMAP server must be
established and a user must be authenticated successfully, and a mailbox
must be selected.
Examples:
$imap = new ezcMailImapTransport( 'imap.example.com' );
$imap->authenticate( 'username', 'password' );
$imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
return an ezcMailImapSet containing all messages flagged as 'SEEN'
$set = $imap->searchMailbox( 'SEEN' );
return an ezcMailImapSet containing messages with 'release' in their Subject
$set = $imap->searchMailbox( 'SUBJECT "release"' );
criterias can be combined:
return an ezcMailImapSet containing messages flagged as 'SEEN' and
with 'release' in their Subject
$set = $imap->searchMailbox( 'SEEN SUBJECT "release"' );
$set can be parsed with ezcMailParser
public searchMailbox ( string $criteria = null ) : ezcMailImapSet | ||
$criteria | string | |
return | ezcMailImapSet |
/** * Get the password reset URL. * * @return string */ public static function getPasswordResetURL() { $options = new \ezcMailImapTransportOptions(); $options->ssl = true; $imap = new \ezcMailImapTransport('imap.gmail.com', null, $options); $imap->authenticate('*****@*****.**', Config::get('kinvey::testMail')); $imap->selectMailbox('Inbox'); $set = $imap->searchMailbox('FROM "*****@*****.**"'); $parser = new \ezcMailParser(); $mail = $parser->parseMail($set); preg_match("#https.*#", $mail[0]->generateBody(), $matches); $url = html_entity_decode($matches[0]); $url = mb_substr($url, 0, -1); foreach ($set->getMessageNumbers() as $msgNum) { $imap->delete($msgNum); } $imap->expunge(); return $url; }
public function testUidSearchMailboxFail() { $imap = new ezcMailImapTransport(self::$server, self::$port, array('uidReferencing' => true)); $imap->authenticate(self::$user, self::$password); try { $set = $imap->searchMailbox('SUBJECT "pine"'); $this->fail('Expected exception was not thrown.'); } catch (ezcMailTransportException $e) { $this->assertEquals("An error occured while sending or receiving mail. Can't call searchMailbox() on the IMAP transport when a mailbox is not selected.", $e->getMessage()); } }
// Fetch one message from the server (here: get the message no. 2) $set = $imap->fetchByMessageNr(2); // Fetch a range of messages from the server (here: get 4 messages starting from message no. 2) $set = $imap->fetchFromOffset(2, 4); // Fetch messages which have a certain flag // See the function description for a list of supported flags $set = $imap->fetchByFlag("DELETED"); // Fetch a range of messages sorted by Date // Use this to page through a mailbox // See the function description for a list of criterias and for how to sort ascending or descending $set = $imap->sortFromOffset(1, 10, "Date"); // Sort the specified messages by Date // See the function description for a list of criterias and for how to sort ascending or descending $set = $imap->sortMessages("1,2,3,4,5", "Date"); // Fetch messages which match the specified criteria. // See the section 6.4.4. of RFC 1730 or 2060 for a list of criterias // (http://www.faqs.org/rfcs/rfc1730.html) // The following example returns the messages flagged as SEEN and with // 'release' in their Subject $set = $imap->searchMailbox('SEEN SUBJECT "release"'); // Delete a message from the server (message is not physically deleted, but it's // list of flags get the "Deleted" flag. $imap->delete(1); // Use this to permanently delete the messages flagged with "Deleted" $imap->expunge(); // Use this to keep the connection alive $imap->noop(); // Create a new mail parser object $parser = new ezcMailParser(); // Parse the set of messages retrieved from the server earlier $mail = $parser->parseMail($set);