(PHP 4, PHP 5, PHP 7, PHP 8)
imap_sort — Ordena mensajes
$imap,$criteria,$reverse,$flags = 0,$search_criteria = null ,$charset = null Recupera y ordena los números de mensajes en función de los parámetros dados.
imapcriteria
Los criterios criteria pueden ser
uno (y solo uno) de los siguientes:
SORTDATE : fecha del mensaje
SORTARRIVAL : fecha de llegada
SORTFROM : nombre del primer buzón
de la dirección de origen (From address)
SORTSUBJECT : asunto del mensaje
SORTTO : nombre del primer buzón
de destino (To address)
SORTCC : nombre del buzón de
copia oculta (cc address)
SORTSIZE : tamaño del mensaje en bytes
reverseSi se debe ordenar en orden inverso.
flags
Los flags son máscaras de bits,
de uno o más de los siguientes elementos:
SE_UID : devuelve UID en lugar de números
SE_NOPREFETCH : no predescargar los mensajes encontrados
search_criteriaCriterios de búsqueda en formato IMAP2. Para más detalles ver imap_search() .
charsetConjunto de caracteres MIME a utilizar durante la búsqueda de string .
Devuelve un array de números de mensajes ordenados en función
de los parámetros proporcionados, o false si ocurre un error.
| Versión | Descripción |
|---|---|
| 8.1.0 |
El parámetro imap ahora espera una instancia de IMAP\Connection
; anteriormente, se esperaba un resource imap válido.
|
| 8.0.0 |
reverse es un bool en lugar de int .
|
| 8.0.0 |
search_criteria y charset son ahora nullable.
|
I worked a lot with IMAP functions since I wrote a complete webmail and I've got a little tip about the imap_sort function :
There is a big difference between :
<?php
imap_sort($imap, SORTDATE, 1);
// and
imap_sort($imap, SORTARRIVAL, 1);
?>
The first command will issue a
>> FETCH 1:last (UID ENVELOPE BODY.PEEK[HEADER.FIELDS (Newsgroups Content-MD5 Content-Disposition Content-Language Content-Location Followup-To References)] INTERNALDATE RFC822.SIZE FLAGS)
While the second resulted in
>> FETCH 1:last (UID INTERNALDATE RFC822.SIZE FLAGS)
As a result, using SORTDATE took 3 seconds longer to complete on a 800-emails mailbox, while the results are quite the same (except if you have to deal with forged dates or timezones, but the arrival order is far more logical)
My advice if you sort your emails by arrival is to actually use SORTARRIVAL, or better don't use imap_sort and go straight with message numbers (not UIDs). On large mailboxes, if you display messages per page, you will have significant performance increases (by avoiding 5 seconds of sorting).