我正在使用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以忽略某些特定消息。
如果我不清楚,请告诉我。
谢谢!
答案 0 :(得分:1)
要排除多个消息ID,您可以执行以下操作:
SearchTerm st = new NotTerm(new OrTerm(new StringTerm[]{
new MessageIDTerm(messageId1),
new MessageIDTerm(messageId2),
... })
不幸的是,没有直接的方法来限制返回的消息数量。但是,您可以使用ReceivedDateTerm
缩小搜索范围并执行多次搜索,直到获得所需的邮件数量,从而部分解决此问题。