--- mailhandler.retrieve.inc.org	2010-04-09 04:14:42.000000000 +0200
+++ mailhandler.retrieve.inc	2011-01-19 16:02:33.000000000 +0100
@@ -1,6 +1,5 @@
 <?php
 
-
 /**
  * Establish IMAP stream connection to specified mailbox.
  * 
@@ -77,7 +76,6 @@ function mailhandler_get_part($stream, $
   return false;
 }
 
-
 /**
  * Returns an array of parts as file objects
  *
@@ -186,7 +184,6 @@ function mailhandler_get_parts($stream, 
   return $parts;
 }
 
-
 /**
  * Retrieve MIME type of the message structure.
  */
@@ -334,19 +331,21 @@ function mailhandler_batch_finished($suc
  *   Array, values contain message numbers
  */
 function mailhandler_get_unread_messages($result) {
+  $sorted_result = imap_sort($result, SORTARRIVAL, 0);
   $unread_messages = array();
   $number_of_messages = imap_num_msg($result);
-  for ($i = 1; $i <= $number_of_messages; $i++) {
-    $header = imap_header($result, $i);
+
+  for ($i = 0; $i < $number_of_messages; $i++) {
+    $header = imap_header($result, $sorted_result[$i]);
     // only process new messages
     if ($header->Unseen != 'U' && $header->Recent != 'N') {
       continue;
     }
-    $unread_messages[] = imap_uid($result, $i);
+    $unread_messages[] = imap_uid($result, $sorted_result[$i]);
   }
   return $unread_messages;
 }
-
+ 
 /**
  * Retrieve individual messages from an IMAP result
  * 
