PHP Conference Nagoya 2025

imap_sort

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

imap_sortİletileri sıralar ve döndürür

Açıklama

imap_sort(
    IMAP\Connection $imap,
    int $kural,
    bool $tersine,
    int $seçenekler = 0,
    ?string $arama_kuralı = null,
    ?string $karküm = null
): array|false

Belirtilen bağımsız değişkenlere göre iletileri sıralar ve döndürür.

Bağımsız Değişkenler

imap

IMAP\Connection nesnesi.

kural

Şunlardan sadece biri belirtilebilir:

tersine

1 atanırsa sıralama ters yönde yapılır.

seçenekler

Aşağıda, lazım olanlardan oluşan bir bit maskesi olarak belirtilir:

  • SE_UID - Sıra numarası yerine eşsiz kimlikler döner.
  • SE_NOPREFETCH - Arama yapılacak iletiler önce alınmaz.

arama_kuralı

IMAP2 biçemi arama kuralı dizgesi. Ayrıntılar için bkz: imap_search()

karküm

Dizgeleri sıralamakta kullanılacak MIME karakter kümesi.

Dönen Değerler

Belirtilen bağımsız değişkenlere göre sıralanmış olarak bir ileti dizisi döner, başarısızlık durumunda false döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.1.0 imap bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir imap değeri kabul ederdi.
8.0.0 tersine artık int değil bool türünde.
8.0.0 arama_kuralı ve karküm artık null olabiliyor.

add a note

User Contributed Notes 1 note

up
9
antoine dot spam-nono at maxg dot info
18 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