记JavaMail判断邮件是否已读的坑


使用JavaMail实现监控邮箱重要邮件并获取附件保存到服务器,在做这个功能的时候遇到一个大坑,就是在判断邮件是否已读的时候,在网上看到很多例子,都是通过msg.getFlags()方法获取到全部的Flag之后再遍历判断是否包含 Flags.Flag.SEEN属性,这个方法经过验证是失败的,我将这个getFlags的数据打印出来发现都是空集合。
这其中肯定有bug,我使用的javaMail 版本是1.7,邮箱是阿里企业邮箱,尽管我不知道问题出在哪里,暂时也没有时间去研究这个问题。那么我是如何判断阿里企业邮箱是否已读的呢?我经过测试发现可以通过以下代码来正确的判断邮件是否已读,true就是已经读取过。

msg.getFlags().contains(Flags.Flag.SEEN)

总结:
网上的案例不能直接搬来使用的,不是说对方写的不对。有时候,对方当时是对的,版本更新或者其它调整之后如今你再去使用就有可能出现问题了。
实践是检验真理的唯一标准!!!

Logo

鸿蒙生态一站式服务平台。

更多推荐