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 是一个唯一的标识符,不会随着时间的推移而改变,而消息序列号可能会在邮箱内容发生变化时改变。

此函数是 imap_msgno() 的反函数。

参数

imap

一个 IMAP\Connection 实例。

message_num

消息编号。

返回值

给定消息的 UID。

变更日志

版本 说明
8.1.0 现在 imap 参数期望一个 IMAP\Connection 实例;以前,期望一个有效的 imap 资源

注释

注意:

此函数不受 POP3 邮箱支持。

参见

添加注释

用户贡献的注释 7 个注释

8
Denis Rendler
9 年前
我想指出,至少在 Gmail 的情况下,如果电子邮件从一个文件夹移动到另一个文件夹,其 UID 会发生变化。即使移动回同一个文件夹,UID 也会递增,从而发生变化。
我在依赖 UID 不会发生变化的概念后,以这种方式发现了这一点,因为我在几乎所有文档中都发现了这一点。
5
steve_foley at excite dot com
21 年前
请注意,标头中的 message_id 不是 UID - 使用它很危险,因为许多邮件程序都没有放入 message_id
4
Maikel
14 年前
请注意,uid 在单个邮箱中是唯一的。这意味着一条消息可以拥有与邮箱数量相同的 uid
2
Andreas Seeger
16 年前
在使用 imap_expunge 时,uid 会发生变化。请确保
在使用 imap_expunge 之前完成所有工作。
-2
cmanley at example dot com
6 年前
如果您想要模拟 POP3 UIDL 支持,那么您可以使用我的 imap 函数包装器类,或者只复制/修改其标头到 UIDL 哈希方法
https://github.com/cmanley/PHP-IMAP-Client/
-5
anon et mouse
15 年前
关于 Andreas 关于 imap_expunge() 的注释的澄清...

imap_expunge() 确实会改变 UID,但只有在 IMAP 流关闭并重新连接后才会改变。

您可以在一个 IMAP 流(无重新连接)中使用 imap_expunge() 多次,而 UID 会保持不变,而 Msgno 会随着 imap_delete() 后跟 imap_expunge() 的使用而改变。
-6
roger at sdr dot com dot au
16 年前
MDaemon(以及可能其他服务器)中 PUBLIC 文件夹中的 UID 的一个小怪癖。如果服务器将存储标志选项设置为基于每个用户的,则 UID 在用户之间可能不同步。也就是说,一条消息对于一个用户来说可能是 UID 5(意味着它是进入邮箱的第 5 条消息),而对于另一个用户来说可能是 UID 3(也许他后来订阅了这个邮箱)。如果这是个问题,请为邮箱关闭基于每个用户的选项。
To Top