PHP 8.4.0 RC4 available for testing

imap_uid

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

imap_uid指定したメッセージシーケンス番号の UID を返す

説明

imap_uid(IMAP\Connection $imap, int $message_num): int|false

この関数は、指定したメッセージシーケンス番号の UID を返します。 メッセージ番号はメールボックスの内容を変更する度に変わる可能性が ありますが、UID はユニークな ID であり時間が経過しても変わりません。

この関数は、imap_msgno() の逆関数です。

パラメータ

imap

IMAP\Connection クラスのインスタンス。

message_num

メッセージ番号。

戻り値

指定したメッセージの UID を返します。

変更履歴

バージョン 説明
8.1.0 引数 imap は、IMAP\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、有効な imap リソース が期待されていました。

注意

注意:

この関数は、POP3 メールボックスではサポートされません。

参考

  • imap_msgno() - 指定した UID のメッセージ番号を返す

add a note

User Contributed Notes 6 notes

up
8
Denis Rendler
9 years ago
I would like to point out that, at least in the case of Gmail, the UIDs of emails are changed if they are moved from one folder to another. Even if moved back to the same folder the UIDs get incremented and thus changed.
I found this the hard way after relaying on the notion that UIDs do not change as I found almost everywhere in the docs.
up
5
steve_foley at excite dot com
22 years ago
Please note that message_id in the header is NOT the UID - and its dangerous to use as many mail progs don't put a message id in
up
4
Maikel
14 years ago
Be aware that the uid is unique in a single mailbox. That means a message can have as much uids as mailboxes
up
2
Andreas Seeger
16 years ago
The uid will change in case of unsing imap_expunge. Be shure that
all work ist done before using imap_expunge.
up
-2
cmanley at example dot com
6 years ago
If you want emulated POP3 UIDL support, then you can either use my imap function wrapper class, or just copy/modify it's header to UIDL hashing method:
https://github.com/cmanley/PHP-IMAP-Client/
up
-5
anon et mouse
15 years ago
clarification for Andreas' note about imap_expunge()...

imap_expunge() does indeed change the UID, but only *after* the IMAP stream has closed and then reconnects.

You can use imap_expunge() as many times as you want within one IMAP stream (no reconnects) and the UID stays the same while the Msgno will change with imap_delete() followed by imap_expunge().
To Top