如何获取不超过X秒的电子邮件?

时间:2016-11-08 11:40:53

标签: java javamail imap gmail-imap

我使用此代码搜索我的Gmail收件箱:

Session session = Session.getDefaultInstance(new Properties());
Store store = session.getStore("imaps");
store.connect("imap.googlemail.com", 993, EMAIL, PASSWORD);
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_WRITE);
Message[] messages = emailFolder.search(new AndTerm(new SearchTerm[] { new SubjectTerm(subject), new FromTerm(new InternetAddress(sender)), new YoungerTerm((int)TimeUnit.MINUTES.toSeconds(3)) }));

但是我收到了这个错误:

javax.mail.MessagingException: A4 BAD Could not parse command;

如果我删除YoungerTerm搜索字词,搜索调用会成功并返回消息,但我需要通过添加YoungerTerm过滤器来减少搜索结果。

1 个答案:

答案 0 :(得分:2)

YoungerTerm类依赖于gmail不支持的IMAP扩展RFC 5032。执行所需操作的唯一方法是检索INTERNALDATE并在客户端中进行过滤。

有点奇怪javamail会让你创建和发送一个使用YoungerTerm的命令;当然它应该知道服务器会拒绝它吗?