【发布时间】:2014-03-31 02:20:44
【问题描述】:
msgno 和 uid 有什么区别?即使删除了消息,它们似乎总是一样的!?
【问题讨论】:
msgno 和 uid 有什么区别?即使删除了消息,它们似乎总是一样的!?
【问题讨论】:
正如http://www.php.net/manual/en/function.imap-uid.php 所说:
此函数返回给定消息序列号的 UID。 UID 是一个不会随时间变化的唯一标识符,而邮件序列号可能会随着邮箱内容的变化而变化。
【讨论】:
imap_fetch_overview() 检索数据时始终与 msgno 相同
就我而言,uid 始终与 msgno 和 message_id 相同
最糟糕的是,当我在邮件服务器上删除邮件时,msgno 和 UID 按到达顺序重新归因。
我制作了一个小脚本,它使用 imap_search 和 imap_overview 获取邮件以获取标题,我使用 imap_uid($this->GetConnection(),$msgno);强制从 MSGNO 获取 UID,结果如下:
echo "MSGNO : $msgno UID : $overview->uid UIDBYNO : "。 $mbox->GetUidByNum($msgno)."
";
MSGNO:851 UID:851 UIDBYNO:851 MSGNO:852 UID:852 UIDBYNO:852 MSGNO:853 UID:853 UIDBYNO:853 MSGNO:854 UID:854 UIDBYNO:854 MSGNO:855 UID:855 UIDBYNO:855 MSGNO:856 UID:856 UIDBYNO:856 MSGNO : 857 UID : 857 UIDBYNO : 857
所以 1) uid 不是唯一的 2) msgno 总是和 uid 一样
也许邮件服务器不遵守 RFC!
【讨论】: