private function findMessage($token) { $mailbox = new Imap(EMAIL_SERVER, EMAIL_USER, EMAIL_PASSWORD); $i = 0; do { sleep(1); $messages = $mailbox->listMessages(); foreach ($messages as $number => $headers) { if (strpos($headers['subject'], $token) !== FALSE) { $message = $mailbox->getMessage($number, TRUE); $mailbox->deleteMessage($number); return $message; } } $i++; } while ($i < 60); throw new Exception('Email message ' . $token . ' never arrived'); }
$mailbox = 'my.imapserver.com'; $username = '******'; $password = '******'; $encryption = 'tls'; // or ssl or '' // open connection $imap = new Imap($mailbox, $username, $password, $encryption); // stop on error if ($imap->isConnected() === false) { die($imap->getError()); } // get all folders as array of strings $folders = $imap->getFolders(); foreach ($folders as $folder) { echo $folder; } // select folder Inbox $imap->selectFolder('INBOX'); // count messages in current folder $overallMessages = $imap->countMessages(); $unreadMessages = $imap->countUnreadMessages(); // fetch all messages in the current folder $emails = $imap->getMessages(); var_dump($emails); // add new folder for archive $imap->addFolder('archive'); // move the first email to archive $imap->moveMessage($emails[0]['id'], 'archive'); // delete second message $imap->deleteMessage($emails[1]['id']);