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'); }