我正在使用PHP的IMAP函數從POP3郵箱中檢索郵件&想知道是否有任何方法可以將新郵件與舊郵件區分開來?如何在爲POP3郵箱使用PHP的IMAP功能時僅查找「新」消息?
不幸的是,我不能只刪除那些因爲他們需要留在郵件服務器上而被刪除的郵件,所以我現在想知道每次我連接的時候,我怎麼才能找回新的或者能夠告訴除了我之前已經檢索過的舊版本之外的新版本?
我知道每封郵件都附有一個UID &我可以使用這個..但是我讀過如果郵件被刪除,這可以改變;因爲這些消息可能會從服務器中刪除。
我正在使用PHP的IMAP函數從POP3郵箱中檢索郵件&想知道是否有任何方法可以將新郵件與舊郵件區分開來?如何在爲POP3郵箱使用PHP的IMAP功能時僅查找「新」消息?
不幸的是,我不能只刪除那些因爲他們需要留在郵件服務器上而被刪除的郵件,所以我現在想知道每次我連接的時候,我怎麼才能找回新的或者能夠告訴除了我之前已經檢索過的舊版本之外的新版本?
我知道每封郵件都附有一個UID &我可以使用這個..但是我讀過如果郵件被刪除,這可以改變;因爲這些消息可能會從服務器中刪除。
那麼發現這個..
基本上,POP3協議不支持此功能。但是,您可以使用message-id實現此功能。 Message-Id是 POP3服務器上電子郵件的唯一標識符。您的應用程序可通過GetMsgID POPMAIN對象的方法獲取指定電子郵件的消息標識。
首先,您的應用程序應該將檢索到的電子郵件的消息標識記錄到本地的 消息標識列表中。下一次檢索電子郵件之前,請將本地消息ID 與遠程消息ID進行比較。如果此消息標識存在於您的本地消息標識列表的 中,則表示它已舊,否則爲新標識。
雖然我很確定我讀過之前並不是所有的客戶端都會返回message_id ......任何人都知道這是否正確?
這爲我工作:
$result = imap_search($connection, 'UNSEEN');
參考:https://www.electrictoolbox.com/php-imap-unread-messages/
檢查數據庫中的每個消息的ID都會使你的腳本運行下去,如果你有成千上萬的郵件的郵箱。關於消息UID,一些交換服務器版本不支持。我還沒有找到獲取新消息的好方法.. – unxp 2016-07-26 14:16:49