JavaMail 如何只处理新邮件
这个应该可以实现的,部分邮件服务器是可以提供一个标识来判断是不是未读,但是部分邮件服务器不支持。
主流邮件服务器类型:CoreMail , NetEase Flash Mail
网易:核心是 CoreMail(曾经用的国产)
QQ:核心也是CoreMail 版本显示QQMail 2.X
新浪,搜狐,Gmail 都是:NetEase Falsh Mail 现在版本2.0左右
如果服务器支持:
可以直接判断是否为未读:
在上一篇文章里 的工具类有一个方法boolean isNew(Message mimeMessage) ;
代码如下:
/**
* 判断此邮件是否已读,如果未读返回返回false,反之返回true
*/
public boolean isNew(Message mimeMessage) throws MessagingException {
boolean isnew = false;
Flags flags = mimeMessage.getFlags();
Flags.Flag[] flag = flags.getSystemFlags();
for (int i = 0; i < flag.length; i++) {
if (flag[i] == Flags.Flag.SEEN) {
isnew = true;
break;
}
}
return isnew;
}
上一篇文章:
Java Mail获取邮件http://blog.csdn.net/klbdy/archive/2011/06/21/6558769.aspx
如果服务器不支持:
只要自己判断了
每一封邮件都有一个唯一标识 Uid。
只有自己处理,判断
把Uid存一下,来判断。
取Uid 方法:
这个Folder是邮件自动获取的参考
上一篇文章:
Java Mail获取邮件http://blog.csdn.net/klbdy/archive/2011/06/21/6558769.aspx
getCoun 方法
这是具体方法
public String getMailUid(Message m) {
String _uid = null;
if (m != null)
setMessage(m);
try {
_uid = ((POP3Folder) folder).getUID(m);
} catch (MessagingException e) {
throw new RuntimeException(e.getMessage());
}
return _uid;
}