查看邮件数、新邮件和未读邮件

原文链接: https://blog.csdn.net/killmice/article/details/8313883

                        查看邮件数、新邮件和未读邮件

想知道邮箱中共有多少邮件、有多少邮件读过和有多少邮件没有读过。

Folder对象提供了三个方法。
GetMessageCount方法显示邮箱中总共有多少封信;

getNewMessageCount显示邮箱中新邮件的封数;

getUnreadMessageCount显示邮箱中未读邮件的封数。

注意:对于POP3协议,只支持GetMessageCount查询邮件总数。不支持判断邮件的未读和新邮件标记,只有自己进行判断操作了。

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

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


     
    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){}  
    }   



    javamail只接收新邮件的方法(邮件的UID与MessageID是有区别的)
    这篇也可以瞄瞄

猜你喜欢

转载自blog.csdn.net/xiao__jia__jia/article/details/83716098
今日推荐