Bar*_*tak 5 java imap jakarta-mail
我有一个IMAPFolder与MessageCountListener侦听消息从文件夹被添加/移除。在我的内部,我messageRemoved(MessageCountEvent ...)需要获取刚刚删除的消息的 UID,以便我可以在本地缓存中反映这些更改。
问题是,如果我尝试对IMAPFolder.getUID(Message ...)已删除的消息执行,我会得到
javax.mail.MessageRemovedException
at com.sun.mail.imap.IMAPMessage.checkExpunged(IMAPMessage.java:220)
at com.sun.mail.imap.IMAPFolder.getUID(IMAPFolder.java:1949)
at (...).IdleWatcher$1.messagesRemoved(IdleWatcher.java:64)
at javax.mail.event.MessageCountEvent.dispatch(MessageCountEvent.java:152)
at javax.mail.EventQueue.run(EventQueue.java:134)
at java.lang.Thread.run(Thread.java:856)
Run Code Online (Sandbox Code Playgroud)
如何确定已删除邮件的 UID?我可以查看所有缓存的消息并检查哪些消息仍然存在,但是每次删除消息时都需要进行资源密集型操作。
删除后,您将无法获取某个内容的 UID。删除就是删除。
解决此问题的经典方法是使用 UID 作为缓存键并设计您的程序,以便您可以缓存已删除的消息一段时间而不会产生不良影响。例如,如果您想显示未见的邮件,请询问服务器当前未见的邮件,然后向缓存询问这些邮件。
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |