看看 javamail 的 monitor.java 代码

解决方案 »

  1.   

    不成
    monitor.java用的是imap协议,现在的邮箱好像都用pop3了
    如果用pop3得话,那个什麽messagecountchange事件根本触发不了
      

  2.   

    肯定给肯定给,当然,必须得是正确答案:)
    绝不食言,不信你看这个
    http://www.csdn.net/expert/topic/328/328421.shtm
      

  3.   

    用下面的方法得到每次的 uidl 列表,然后再比较有没有新的 uidl,如果有新的话,则那一封是新邮件(注意处理异常的情况)。Session session = null;
    Store store = null;
    Folder folder = null;
    POP3Folder pf = null;
    String[] uidlArr;
    Message[] msgs = null;
    FetchProfile fp = null;// Get a Session object
    session = Session.getDefaultInstance(props, null);
                
    // Get a Store object
    store = session.getStore(_protocol); // Connect
    store.connect(_host, _port, _user, _password);// Open the Folder
    folder = store.getDefaultFolder();
    folder = folder.getFolder("Inbox");try {
        folder.open(Folder.READ_WRITE);
    } catch (MessagingException ex) {
        folder.open(Folder.READ_ONLY);
    }fp = new FetchProfile();
    fp.add(UIDFolder.FetchProfileItem.UID);msgs = folder.getMessages();
    messageCount = msgs.length;
    folder.fetch(msgs, fp);pf = (POP3Folder)this.folder;
    uidlArr = new String[messageCount];for (int i=0;i<messageCount;i++){
        uidlArr[i] = pf.getUID(msgs[i]);
        if (uidlArr[i] == null) return;  // error! can't get the uidl array, handle this case
    }
      

  4.   

    呵呵,随便从新邮件里抽一封给你的客户,然后告诉它这一封是最新的就是了,反正他那些新邮件也没看过。
    或者比较这些邮件中的 Date 字段(先把这些邮件的 Header 全 Download 下来)。
      

  5.   

    POP3Folder 是什麽呀,是你自己写的吗
      

  6.   

    是这个: com.sun.mail.pop3.POP3Folder