Сортировка почтового ящика Imap по дате с помощью ImapMailbox.php

У меня есть система поддержки клиентов, которая создает электронную почту при получении электронного письма. Я использовал postfix и специальную конфигурацию, чтобы заполучить электронные письма, чтобы добавить дополнительные функции.

Например, я хочу включить вложения, отправленные из электронной почты. Система не делает этого, но создает электронное письмо с объектом, поэтому я могу включать вложения, сопоставляя темы.

Я использовал ImapMailBox.php для чтения содержимого электронной почты. Все работает нормально, но я получаю сообщение о том, что последнее сообщение отправлено, поэтому я получаю содержимое из любого другого электронного письма с тем же вопросом, поэтому мне нужно получить последнее электронное письмо.

$mailboxP = new ImapMailbox('{127.0.0.1:143/novalidate-cert}',POSTFIX_EMAIL,POSTFIX_PASSWORD,ATTACHMENT_DIR, 'utf-8'); foreach($mailbox->searchMails('ALL') as $mailId) $mail = $mailbox->getMail($mailId); $mailx=(array)$mail; $att=$mailx['attachments']; 

Я попытался использовать usort для объекта $ mail, с такой функцией

  function mysort($a,$b) { return strtotime($a->date)-strtotime($b->date); } 

и массиву с такой функцией, как это

  function mysort($a,$b) { return strtotime($a['date'])-strtotime($b['date']); } 

Я также пытался использовать imap_sort в $ mail и $ mailx, но ничего из этого не работает. ошибки, которые я получаю

  imap_sort() expects parameter 1 to be resource, array given imap_sort() expects parameter 1 to be resource, object given usort() expects parameter 1 to be array, object given when passing an array I get undefined index date but it defined .. 

Кто-нибудь может быть любезным, чтобы указать мне в правильном направлении.

Вы можете добавить такую ​​функцию на ImapMailbox.php:

 public function searchMailsSorted($imapCriteria = 'ALL') { $this->checkConnection(); $mailsIds =imap_sort($this->mbox,SORTDATE,1,SE_UID,$imapCriteria,$this->serverEncoding); return $mailsIds ? $mailsIds : array(); } 

И затем используйте его в своем коде следующим образом:

  foreach($mailbox->searchMailsSorted('ALL') as $mailId) { ///insert code here }