2010-10-15 99 views
0

我的任務是通過POP3(無IMAP)從GMail中檢索一組消息。 我可以做RETR MSG#,並禁止刪除。POP3協議中的消息ID

Fetchmail和procmail不斷嘗試下載一組新的,未讀的消息(這部分轉到ServerFault)。是否有專門設計用於區分以前讀取的消息的標題?或者我應該做消息正文/主題/日期的校驗和?

回答

4

POP3協議不支持讀取/看到的標誌類型。有些服務器支持像標準X-Seen這樣的非標準標題,您必須使用TOP來獲取消息的標題並查看它是否已設置(以及確定它是否已在此處)。

它應該由客戶端來覆蓋POP3中的讀取標誌,但好消息是您不需要執行校驗和,只需使用UIDL即可爲您提供不變,獨特的列表收件箱中郵件的ID,或者如果使用消息#調用,將爲您提供郵箱中該位置郵件的唯一ID(因爲如果其他客戶端正在訪問郵箱並且可能會刪除)。

+0

我有一個相關的問題,這是爲了能夠在郵箱與郵件的工作,其他的客戶正在訪問。當唯一的標識符是消息號碼時,客戶端如何安全地刪除消息,並且這可以在沒有警告的情況下更改?換句話說,如果你想刪除消息#1,但其他一些客戶刪除該消息,你實際上正在刪除消息#2,你不知道。處理這個問題的正確方法是什麼? – 2011-01-08 00:27:04

+0

你希望在顯示時間得到'UIDL'(可以通過消息#查找)並通過它刪除而不是'message#'。您可以嘗試在刪除時將'message#'引用到'UIDL',但它受到同樣的缺陷。如果'UIDL'不是選項,那麼您需要比較或標題(涵蓋所謂的獨特消息ID,發送/接收日期,標題等)和消息大小以減少疑問。 – Rudu 2011-01-10 16:16:48

-1

儘量控制與消息ID消息

Message message ; 
.... 
String messageId = message.getHeader("message-id")[0];