java - 如何获取不早于 X 秒的电子邮件?

标签 java jakarta-mail 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 过滤器来减少结果。

最佳答案

YoungerTerm类取决于 gmail 不支持的 IMAP 扩展,RFC 5032 。执行您想要的操作的唯一方法是检索 INTERNALDATE 并在客户端中进行过滤。

有点奇怪的是,javamail 允许您创建并发送使用 YoungerTerm 的命令;它肯定应该知道服务器会拒绝它吗?

关于java - 如何获取不早于 X 秒的电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40486011/

相关文章:

delphi - 如何通过 TIdIMAP4 接收 UTF-8 编码的消息?

imap - 是否广泛支持IMAP CONDSTORE?

java - 从另一个线程更新 JavaFX UI

java - 使用 DnD 在 JPanel 中移动和重新排序 JLabel

Java 相当于 Matlab 的 `eps` 或 Numpy/Python 的 `spacing` 函数(浮点相对精度)

java - sendSimpeMessage 返回 500

java - 使用 javax.mail 在邮件正文中发送编码图像

java - 如何重绘控制台屏幕,使其在屏幕被清除时显示?

ssl - 无法在 weblogic 服务器中进行 SSL 连接

php - 在显示进度的同时使用 IMAP 阅读电子邮件