if (message[i].getFlags().toString().equals("javax.mail.Flags@0")||message[i].getFlags().toString().equals("javax.mail.Flags@10")){
                        out_flag[0]=true;//新邮件
                }else if(message[i].getFlags().toString().equals("javax.mail.Flags@20")){
                         out_flag[0]=false;//旧邮件
                }

解决方案 »

  1.   

    按照楼上的试了一下:     message = inbox.getMessage(1);     if (message.getFlags().toString().equals("javax.mail.Flags@0")
          ||message.getFlags().toString().equals("javax.mail.Flags@10"))
          {
            System.out.println("new");
          }
         else if(message.getFlags().toString().equals("javax.mail.Flags@20"))    {
          System.out.println("old");
        }
    结果是所有的email都是new,
    flags.toString()都是javax.mail.Flags@0
    试了263.net,163.com,都是如此...
    继续期待解答.....
      

  2.   

    javamail中不能确定新邮件;
    解决方法:
    (1)第一次收邮件时,每个邮件都是新的;
    (2)(在你的系统中)保存每一个邮件的UID;
    (3)邮件读过之后,就保存该邮件的标识(已读);
    (4)再次收邮件时,读出UID,在你的系统中查找是否存在该UID,若没有,则为新.
    ...
      

  3.   

    我上面的方法是没有问题的,我现在用的就是这样的方法,一定是你的程序有问题,你在读信时,folder可能是设置的readonly
      

  4.   

    folder的打开方式是READ_WRITE没错.能否请楼上多提供一些代码?
    并请说明使用的邮件服务器?