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();
}
}
}
}
--------------------编程问答-------------------- = =! 没一个人知道么? --------------------编程问答-------------------- 我也遇到了这个问题 --------------------编程问答--------------------
我认为:如果sina之类的邮箱都可以,就是qq邮箱不可以,在代码相同的情况下:只能
说明是qq的问题。 --------------------编程问答-------------------- 乱码问题是qq用了gb2312编码 --------------------编程问答-------------------- 我也有这个问题,有哪位大侠能解答下
补充:Java , Java EE