Question

I am saving my mailbox elements to a mysql database (to perform fast searches in my intranet, since imap_search' is too slow).

I am connecting to the server and folder, and iterating through messages.

simplified code:

$numMsg = imap_num_msg($conn);

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

and I get something like this:

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

which is totally wrong!!!

uid isn't supposed to be unique?

I get this UIDs in 5 sub-folders that I have and also in Sent Items, on the Inbox I get uids right (msg_num:5 - uid:1503msg_num:6 - uid:1504msg_num:7 - uid:1506)

Était-ce utile?

La solution

Right, the UID is only unique per folder. The full persistent unique ID of a message is a tuple of the folder name, the folders UIDVALIDITY, and the messages UID. That tuple, on a correctly implemented server, will only ever refer to one message.

For example: (SENT, 1, 100) Indicates message with ID 100 from the 1st incarnation of the sent folder. UIDVALIDITYs tend to be about 10 digit numbers, and are supposed to change if the folder is deleted and recreated or needs to be reindexed/regenerated by the server software.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top