删除会导致在删除邮件之后对Message对象重新编号

时间:2018-06-28 09:24:39

标签: javamail

我从javamail MailFolder class doc读到:

  

请注意,在以下情况下,会话中的消息的消息号可以更改:   使用expunge方法删除包含的Folder。客户群   使用消息编号作为消息引用的对象应了解   并且应该准备好应对情况(可能是通过   冲洗掉现有的消息号引用并重新加载它们)。   由于这种复杂性,客户端最好使用Message   对象是对消息的引用,而不是消息编号。   删除的Message对象仍然必须修剪,但是其他Message   该文件夹中的对象不受删除的影响。

我想知道如果消息对象发生更改,如何使用消息对象作为对消息的引用,我的意思是,即使在删除之前存储消息对象引用,一旦出现MessageCount REMOVED事件,该对象引用也将与该对象引用不同之前存储。

我之所以这样问,是因为我实际上在使用消息号作为已删除消息的引用时遇到了问题...因此,我正在考虑为每个REMOVED事件完全重建Map of。 我不太喜欢这种方法,因为我认为它可能在大型邮箱中慢慢出现...但是我看不到使用messageNumber的亮点...

谢谢

1 个答案:

答案 0 :(得分:0)

删除消息后,Message对象引用不会更改。引用了消息编号17的Message对象现在可能引用了消息编号15,但是在服务器上它将是相同的 message

很明显,消息对象引用仅在JVM运行时才有效,并且仅在Folder打开时才有效。如果需要一条消息的长期参考,则需要了解IMAP UID。请参见UIDFolder界面和IMAP RFC