2011-08-01 25 views
0

我的做法特定的未读邮件 -寻找从邮件列表使用JavaMail

  1. 得到总邮件列表 -

    List<Message> totalMessageList = Arrays 
          .asList(folder.getMessages()); 
    
  2. 创建列表出来这里面只有未读的邮件。 (我不得不这样做怎么我找不到任何直接的API来获取新的邮件列表。有一个问题这有助于找到邮件是否为未读或不被张贴here

    List<Message> unreadMessageList = new ArrayList<Message>(); 
    

    为简洁起见,我没有发布从总邮件列表中构建未读邮件列表的完整逻辑。

  3. 迭代通过未读邮件列表>检查是否有任何邮件具有所期望的主题,然后阅读电子邮件的内容>如果没有这样的邮件,发现再扔IllegalStateExcepton

现在我的问题是 - 我能改善这种方法?

+0

根据您的应用程序,它似乎很奇怪,一个空邮箱处于非法状态。 – Atreys

+0

我必须提到我使用Gmail – Tarun

+0

Nop,它不是空的邮箱,它没有得到一个我用来触发IllegalStateException的新邮件。如果不是这样,那么有什么更好的例外 – Tarun

回答

1

你可以使用

Folder.search(SearchTerm): Message[] 

http://javamail.kenai.com/nonav/javadocs/javax/mail/Folder.html#search%28javax.mail.search.SearchTerm%29

与相关的搜索关键词,例如FlagTerm为未读标志

http://javamail.kenai.com/nonav/javadocs/javax/mail/search/FlagTerm.html

在谷歌快速检索发现这个

http://www.java2s.com/Code/Java/Email/Searchthegivenfolderformessagesmatchingthegivencriteria.htm

这可能是有用的,但我还没有尝试过

+1

刚刚意识到,我为最简单的任务编写了多少代码。谢谢 – Tarun

+0

很高兴,自从我使用它以来已经有一段时间了,但是我对javax.mail是多么容易做出我想做的大部分事情印象深刻。 – strmqm