我将我的邮箱元素保存到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);
}
Run Code Online (Sandbox Code Playgroud)
我得到这样的东西:
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,我得到了uids (msg_num:5 - uid:1503msg_num:6 - uid:1504msg_num:7 - uid:1506)
Max*_*Max 14
是的,UID只对每个文件夹唯一.消息的完整持久唯一ID是文件夹名称,文件夹UIDVALIDITY和消息UID的元组.在正确实现的服务器上,该元组将只引用一条消息.
例如:(SENT,1,100)表示发送文件夹的第一个版本中ID为100的消息.UIDVALIDITY往往是大约10位数字,如果文件夹被删除并重新创建或需要由服务器软件重新索引/重新生成,则应该更改.