IMAP:java,如何确定文件夹已被重命名或移动?

IMAP: java, how to determine a folder has been renamed or moved?

我们使用 java 邮件 api 和 imap 帐户。假设我们有一个空文件夹 a,然后在 outlook 上将其重命名为 b。该文件夹的全名是 inbox.a,然后是 inbox.b。 或者我们将文件夹移动到inbox.c例如,它变成inbox.c.a.

我们如何确定例如重命名动作(a到b),更清楚如何区分:

  1. a 已重命名为 b 或
  2. a 被删除,生成了完全不同的文件夹 b

我们是否必须使用文件夹中的消息来帮助确定它是真正的重命名还是 delete/create 操作?

在java中,当我调试 IMAPFolder 实例时,我唯一可以参考的值是 UIDValidty 编号?我可以依靠它吗?据我所知,它可以在某些情况下由邮件服务器更改。

没有标准方法。有些服务器有一个非标准的扩展来缓解这种情况 (status x-guid),但是 gmail 是世界上最大的 IMAP 服务器并且没有实现 x-guid。

这是个问题。幸运的是,这种情况并不经常发生。

两个不同的、独立的邮箱可以有相同的uidvalidity。我不知道这种情况有多常见。