为什么imap uid不是唯一的?在不同的文件夹?

时间:2014-04-25 16:43:50

标签: php imap

我将我的邮箱元素保存到mysql数据库(在我的Intranet中执行快速搜索,因为imap_search'太慢了。)

我正在连接到服务器和文件夹,并迭代消息。

简化代码:

$numMsg = imap_num_msg($conn);

for($i=1;$i<=$numMsg;$i++){
    $uid = imap_uid($conn,$i);
    echo("msg_num:".$i." - uid:".$uid);
}

我得到这样的东西:

  

msg_num:5 - uid:5msg_num:6 - uid:6msg_num:7 - uid:7msg_num:8 - uid:8msg_num:9 - uid:9msg_num:10 - uid:10msg_num:11 - uid:11msg_num:12 - uid :12

这是完全错误的!

uid不应该是唯一的吗?

我在5个子文件夹中获得此UID,也在已发送的项目中,在收件箱中获取uID (msg_num:5 - uid:1503msg_num:6 - uid:1504msg_num:7 - uid:1506)

1 个答案:

答案 0 :(得分:13)

是的,UID只对每个文件夹唯一。消息的完整持久唯一ID是文件夹名称,文件夹UIDVALIDITY和消息UID的元组。在正确实现的服务器上,该元组只会引用一条消息。

例如: (SENT,1,100) 表示发送文件夹的第一个版本中ID为100的邮件。 UIDVALIDITY往往是大约10位数字,如果文件夹被删除并重新创建或需要由服务器软件重新索引/重新生成,则应该更改。