我有一个 5GB 的邮箱,我使用 imapsync 移动了它。但不知何故,我搞砸了 --delete/--delete2 选项,结果几乎所有邮件都设置了 \Deleted 标志。我没有延迟删除启用,所以我无法使用未删除实用程序。我使用的是 cyrus-imapd v2.3.7。使用 cyrus-imapd 的调试功能,我发现电子邮件客户端(在我的情况下是 Roundcube)触发以下 IMAP 命令来取消设置它。
UID STORE 179 -FLAGS.SILENT (\Deleted)
我不知道是否可以以某种方式对所有邮件发出此命令。
有什么方法可以取消设置邮箱中所有邮件的 \Deleted 标志?
更新:
使用@geekosaur 在上述命令中指定消息 ID 范围的提示,我可以为 INBOX 下的一个邮箱(如 INBOX.folder1)解决此问题。有什么方法可以递归地为 INBOX 下的多个邮箱执行此操作吗?现在我正在使用/创建一些脚本来解决这个问题,也许使用 Perl 的 IMAP 相关模块。但我仍然需要尽快解决它,所以欢迎提供意见。
更新:
感谢 geekosaur,我成功使用 Perl 的 IMAPClient 模块解决了这个问题。
答案1
您可以指定一系列消息start:end
来代替单个消息编号(179
在您的示例中);用于SEARCH ALL
找出有效的消息编号范围。
AUTHENTICATE
请注意,这是假设您可以使用原始 IMAP,如果使用而不是.. ,这可能会很痛苦甚至不可能LOGIN
。您可能更愿意找到某种 IMAP 工具包(请注意,Cyrusimapd
附带了 Perl 库,可用于脚本登录和执行各种操作,尽管您需要对 RFC 2060 有一定的熟悉度。