I'm using PHP's IMAP functions to retrieve messages from a POP3 mailbox & was wondering is there any way to tell the new messages apart from the old ones?
Unfortunately I cannot just delete the ones that are retrieved as they need to stay on the mail server, so I'm now wondering that each subsequent time I connect, how can I just retrieve the new ones OR be able to tell the new ones apart from the old ones I have already retrieved previously?
I know that each message has a UID attached to it & I could use this.. however I've read that this can change if the messages are deleted; as the messages may be deleted from the server down the track.
Well found this..
Basically, pop3 protocol doesn't support this function. However, you
can implement this with message-id. Message-Id is an unique identifier of email on
POP3 server. Your application can get message-id of a specified email by GetMsgID
method of POPMAIN object.
Firstly, your application should record message-id of email retrieved to a local
message-id list. Next time before you retrieve email, compare local message-id
with remote message-id. If this message-id exists in your
local message-id list, then it is old, otherwise it is new.
Although I'm pretty sure I read before that not all clients will returns the message_id... anyone know if this is correct?
This worked for me:
$result = imap_search($connection, 'UNSEEN');
Reference: https://www.electrictoolbox.com/php-imap-unread-messages/