Javamail读取消息但忽略id的特定消息

时间:2014-05-30 11:58:28

标签: java javamail

我正在使用javamail来读取我的收件箱,但我在我的数据库中有一个messagesId列表,我不想在下次读取收件箱时带来这些消息。 我看到java邮件有notTerm但我需要忽略messageId列表,在这种情况下我找不到怎么做。

这是我的实际代码:

Properties props = new Properties();
props.setProperty("mail.store.protocol", provider);

props.setProperty("mail.imaps.auth.plain.disable","true");
props.setProperty("mail.imaps.ssl.trust", "*");
//props.setProperty("mail.debug", "true");

if (!port.equals("")) props.setProperty("mail." + provider + ".port", CONEXAO_EMAIL_PORTA);

Session session = Session.getInstance(props, null);
Store store = session.getStore();
store.connect(server, inbox, pass);

Folder inbox = store.getFolder(folder);
inbox.open(Folder.READ_WRITE);

Message[] messages = inbox.getMessages(); //Here is where i need to change.

此代码工作正常,但我需要将inbox.getMessages()更改为某些searchTerm和/或notTerm以忽略某些特定消息。

如果我不清楚,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:1)

要排除多个消息ID,您可以执行以下操作:

SearchTerm st = new NotTerm(new OrTerm(new StringTerm[]{ 
    new MessageIDTerm(messageId1),
    new MessageIDTerm(messageId2),
    ... })

不幸的是,没有直接的方法来限制返回的消息数量。但是,您可以使用ReceivedDateTerm缩小搜索范围并执行多次搜索,直到获得所需的邮件数量,从而部分解决此问题。