У меня есть система поддержки клиентов, которая создает электронную почту при получении электронного письма. Я использовал 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 }