【发布时间】:2015-08-18 00:36:36
【问题描述】:
我使用最新的 java 邮件 api。我想重命名包含子文件夹(子文件夹)的 IMAP 文件夹。假设我们有收件箱,并且收件箱有一个子文件夹 inbox.folder1。 folder1 有一个子文件夹,其全名是 inbox.folder1.subfolder1
我想将文件夹 1 重命名为文件夹 2,我希望看到:
inbox.folder2.subfolder1
但在代码之后
// folder instance corresponds to folder1
newFolder = folder.getFolder(newName); //newName = "folder2"
folder.renameTo(newFolder);
如果您使用 Outlook 或 Thunderbird 连接,我有
inbox.folder1.subfolder1
inbox.folder2
我们有两个文件夹,但我希望有一个。而且 subfolder1 仍然位于 folder1 中。并且你不能进入文件夹或子文件夹1,它们会产生错误信息:Reason Given: Mailbox does not exist, or must be subscribed.
我应该使用 setSubscripbed(true/false) 吗?我必须通过迭代每个子文件夹来分别处理子文件夹吗?
【问题讨论】:
-
这是特定于服务器的:但通常当您重命名文件夹时,它的所有子文件夹都应为其父级/重命名。发生这种情况时,您确实需要刷新或修复您拥有的任何文件夹名称缓存。在 Thunderbird 中,这通常意味着重新启动它。根据个人经验,雅虎在这方面存在实施问题。
-
当我使用 Outlook 和 Thunderbird 连接到邮件服务器时,重命名操作正确执行。只有当我尝试用 java 端重命名时,才会出现问题。据我了解,我必须照顾子文件夹和/或添加一些检查步骤,只有 folder.renameTo(folder) 不够?
-
当我尝试重命名没有子文件夹的文件夹时,该过程可以顺利完成。
标签: email directory jakarta-mail imap rename