`
lqixv
  • 浏览: 220607 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

对POP3邮箱中的新邮件的判断方法

    博客分类:
  • java
阅读更多

由于pop3协议不支持对已读未读邮件的标记,因此,要判断一封pop邮箱中的邮件是否是新邮件必须与邮件客户端联合起来才能做到。其原理是,每个服务器都会给每封邮件产生一个唯一的uid,客户端把读到的uid与本地保存的uid比较,如果本地没有这个uid,则这封邮件是新的,否则就是旧邮件。一般的邮件客户端,如 outlook express、foxmail等,都是用这种方法实现的。大约步骤如下:

  1. 客户端读取邮箱里所有邮件的 uid 列表(通过命令 UIDL 可以查看);
  2. 把uid列表与本地保存的uid列表相比较;
  3. 如果本地已存在,则比较下一个邮件uid;
  4. 如果本地不存在此uid,则下载此邮件,并保存此邮件的uid在本地;

大致的java代码实现如下:

URLName url = new URLName("pop3", host, port, "", user, password);
Session session = Session.getInstance(System.getProperties(),null);
Store store = session.getStore(url);
POP3Folder inbox = null;
try {
       store.connect();
       inbox = (POP3Folder) store.getFolder("INBOX");
       inbox.open(Folder.READ_ONLY);
       FetchProfile profile = new FetchProfile(); 
       profile.add(UIDFolder.FetchProfileItem.UID); 
       Message[] messages = inbox.getMessages();
       inbox.fetch(messages, profile);
       for (int i = 0; i < messages.length; i++) 
              System.out.println(inbox.getUID(messages[i])); 
} finally {
       try{
              inbox.close(false);
       }catch(Exception e){}
       try{
              store.close();
       }catch(Exception e){}
} 

 

 参考:

1、http://www.javayou.com/diary/390

2、http://topic.csdn.net/t/20010905/16/273295.html

分享到:
评论
Global site tag (gtag.js) - Google Analytics