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

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在本地;

大致的java代码实现如下:

Java代码   收藏代码
  1. URLName url = new URLName("pop3", host, port, "", user, password);  
  2. Session session = Session.getInstance(System.getProperties(),null);  
  3. Store store = session.getStore(url);  
  4. POP3Folder inbox = null;  
  5. try {  
  6.        store.connect();  
  7.        inbox = (POP3Folder) store.getFolder("INBOX");  
  8.        inbox.open(Folder.READ_ONLY);  
  9.        FetchProfile profile = new FetchProfile();   
  10.        profile.add(UIDFolder.FetchProfileItem.UID);   
  11.        Message[] messages = inbox.getMessages();  
  12.        inbox.fetch(messages, profile);  
  13.        for (int i = 0; i < messages.length; i++)   
  14.               System.out.println(inbox.getUID(messages[i]));   
  15. finally {  
  16.        try{  
  17.               inbox.close(false);  
  18.        }catch(Exception e){}  
  19.        try{  
  20.               store.close();  
  21.        }catch(Exception e){}  
  22. }  
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值