当前位置:编程学习 > JAVA >>

Jmail获取新邮件数量的问题

最近做项目需要读取邮箱里的新邮件数量,觉得很简单用了Jmail,可是做到一半就妖怪了
其他邮箱都还好,遇到QQ邮箱就扯蛋了,
我用的是IMAP协议嘛,可以直接用folder.getNewMessageCount()方法获取到新邮件的总数
其他邮箱都好用 什么网易哟,新浪哟.都没问题..一到QQ邮箱这就为0了  死活获取不了 更扯蛋的就是  获取QQ的未读邮件数量
打个比方运行TEST到了未读邮件数2,然后登录QQ邮箱阅读一封,在回来运行TEST,尼玛还是2.....   去QQ的官网看吧人家还支持IMAP系统.有没有哪位大大知道是怎么回事啊?
我运行我的TEST还会报下面一段错误
javax.mail.MessagingException: A6 BAD ÃüÁîÎÞЧ»òÕß²»Ö§³Ö;
  nested exception is:
com.sun.mail.iap.BadCommandException: A6 BAD ÃüÁîÎÞЧ»òÕß²»Ö§³Ö
at com.sun.mail.imap.IMAPFolder.close(IMAPFolder.java:1003)
at com.sun.mail.imap.IMAPFolder.close(IMAPFolder.java:935)
at com.dne.test.ReciveIMAPmail.main(ReciveIMAPmail.java:50)
Caused by: com.sun.mail.iap.BadCommandException: A6 BAD ÃüÁîÎÞЧ»òÕß²»Ö§³Ö
at com.sun.mail.iap.Protocol.handleResult(Protocol.java:296)
at com.sun.mail.iap.Protocol.simpleCommand(Protocol.java:316)
at com.sun.mail.imap.protocol.IMAPProtocol.close(IMAPProtocol.java:926)
at com.sun.mail.imap.IMAPFolder.close(IMAPFolder.java:1000)
... 2 more

报个错都还是乱码,让我纠结得... --------------------编程问答-------------------- 想了一下还是贴下我的TEST代码吧求高人指点

/**
 *  使用IMAP协议接收邮件
 * @author WuYaShuan
 * @time Jan 17, 20111:29:21 PM
 */
public class ReciveIMAPmail {
  public static void main(String[] args) {
         String imapserver = "imap.qq.com"; // 邮件服务器
         String user = "549005766@qq.com";//根据自已的用户名修改
         String pwd = "283095521@qq.com";     // 根据自已的密码修改
             // 获取默认会话
             Properties prop = System.getProperties();
             prop.put("mail.imap.host",imapserver);
            
             prop.put("mail.imap.auth.plain.disable","true");
             Session mailsession=Session.getInstance(prop,null);
             mailsession.setDebug(false); //是否启用debug模式
             IMAPFolder folder= null;
             IMAPStore store=null;
             int total= 0;
             try{
                store=(IMAPStore)mailsession.getStore("imap");  // 使用imap会话机制,连接服务器
                store.connect(imapserver,user,pwd);
                folder=(IMAPFolder)store.getFolder("INBOX"); //收件箱 
                // 使用只读方式打开收件箱 
                folder.open(Folder.READ_WRITE);
                //获取总邮件数
                total = folder.getMessageCount();
                System.out.println("-----------------您的邮箱共有邮件:" + total+" 封--------------");
                // 得到收件箱文件夹信息,获取邮件列表
          Message[] msgs =folder.getMessages();
                System.out.println("\t收件箱的总邮件数:" + msgs.length);  
                System.out.println("\t未读邮件数:" + folder.getUnreadMessageCount());  
                System.out.println("\t新邮件数:" + folder.getNewMessageCount());  
                System.out.println("----------------End------------------");
             }
             catch(MessagingException ex){
                  System.err.println("不能以读写方式打开邮箱!");
                  ex.printStackTrace();
             }finally {
        // 释放资源
               try{
                   if(folder!=null)
                       folder.close(false); //退出收件箱时,删除做了删除标识的邮件
                  if (store != null)
                     store.close();
                 }catch(Exception bs){
                  bs.printStackTrace();
                 }             
             }          
     }
}

--------------------编程问答-------------------- = =!  没一个人知道么? --------------------编程问答-------------------- 我也遇到了这个问题 --------------------编程问答--------------------
引用 3 楼 ojiajunyao 的回复:
我也遇到了这个问题

我认为:如果sina之类的邮箱都可以,就是qq邮箱不可以,在代码相同的情况下:只能
说明是qq的问题。 --------------------编程问答-------------------- 乱码问题是qq用了gb2312编码 --------------------编程问答-------------------- 我也有这个问题,有哪位大侠能解答下
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,