imap_sort

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_sortObtém e classifica mensagens

Descrição

imap_sort(
    IMAP\Connection $imap,
    int $criteria,
    bool $reverse,
    int $flags = 0,
    ?string $search_criteria = null,
    ?string $charset = null
): array|false

Obtém e classifica números de mensagens pelos parâmetros fornecidos.

Parâmetros

imap

Uma instância de IMAP\Connection.

criteria

Os critérios podem ser um (e somente um) dos seguintes:

  • SORTDATE - data da mensagem
  • SORTARRIVAL - data de chegada
  • SORTFROM - caixa de correio no primeiro endereço de "From"
  • SORTSUBJECT - assunto da mensagem
  • SORTTO - caixa de correio no primeiro endereço de "To"
  • SORTCC - caixa de correio no primeiro endereço de "Cc"
  • SORTSIZE - tamanho da mensagem em octetos

reverse

Informa se a classificação deve ser feita na ordem inversa.

flags

The flags é uma máscara de bits de uma ou mais das seguintes constantes:

  • SE_UID - Retorna UIDs em vez de números de sequência
  • SE_NOPREFETCH - Não pré-busca mensagens pesquisadas

search_criteria

String de critérios de pesquisa no formato IMAP2. Para detalhes, veja imap_search().

charset

Conjunto de caracteres MIME a ser usado ao classificar strings.

Valor Retornado

Retorna um array de números de mensagens classificadas pelos parâmetros fornecidos, ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro imap agora espera uma instância de IMAP\Connection; anteriormente, um resource imap válido era esperado.
8.0.0 reverse agora é bool em vez de int.
8.0.0 search_criteria e charset agora são nullable.
adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
9
antoine dot spam-nono at maxg dot info
19 years ago
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).
To Top