對POP3郵箱中的新郵件的判斷方法

Fay_Q發表於2014-04-04

http://lqixv.iteye.com/blog/563247

由於pop3協議不支援對已讀未讀郵件的標記,因此,要判斷一封pop郵箱中的郵件是否是新郵件必須與郵件客戶端聯合起來才能做到。其原理是,每個伺服器都會給每封郵件產生一個唯一的uid,客戶端把讀到的uid與本地儲存的uid比較,如果本地沒有這個uid,則這封郵件是新的,否則就是舊郵件。一般的郵件客戶端,如 outlook express、foxmail等,都是用這種方法實現的。大約步驟如下:

  1. 客戶端讀取郵箱裡所有郵件的 uid 列表(通過命令 UIDL 可以檢視);
  2. 把uid列表與本地儲存的uid列表相比較;
  3. 如果本地已存在,則比較下一個郵件uid;
  4. 如果本地不存在此uid,則下載此郵件,並儲存此郵件的uid在本地;

獲取uid的程式碼如下:

		POP3Folder folder = (POP3Folder)store.getFolder("INBOX");
		folder.open(Folder.READ_ONLY);
		Message message[] = folder.getMessages();
		for (int i = 0; i < message.length; i++) {
			System.out.println(folder.getUID(message[i]));
		}


 

 

 

相關文章