Особенности работы функции imap_sort в PHP

imap_sort — одна из нескольких функций, с помощью которой можно получить список писем в почтовом ящике. Один из её параметров — criteria, не очевидно, но с помощью него можно задать вид сортировки:

  • SORTDATE — сортировать по дате
  • SORTARRIVAL — дата получения
  • SORTFROM — по первому адресу в поле From
  • SORTSUBJECT — по теме письма
  • SORTTO — по первому адресу в поле To
  • SORTCC — по первому адресу в поле cc
  • SORTSIZE — по размеру сообщения

Как думаете, что произойдёт, если почтовый сервер не поддерживает какой-либо из способов сортировки? Правильно, будет возвращён список писем с сортировкой по-умолчанию — по порядку без каких-либо сообщений об ошибке или уведомлений. Что приведёт к батхёрту и долгим часам поиска ошибки. Например, один из малоизвестных почтовых серверов доступных только по протоколу pop3 не умеет сортировать письма по SORTARRIVAL, однако отлично умеет их сортировать по SORTDATE что в принципе даёт идентичных результат в 99% ситуаций.

В интернете можно встретить советы на подобии: если вы сортируете письма по дате получения с мощью константы SORTARRIVAL, то прекратите это делать! Лучше не использовать функцию imap_sort(), а работать с номерами сообщений, не путайте с UID. В больших почтовых ящиках будет значительное увеличение времени выполнения на сортировку писем.

По-хорошему лучше вообще не пользоваться стандартной библиотекой IMAP, т.к. она не даёт никаких гарантий по корректной работе и жутко не удобна в использовании.