2

我正在尝试在 gmail IMAP 帐户中创建目录树。我在 imaplib 中使用了“create()”命令,但似乎将 \\Noselect 属性添加到创建的文件夹中。这破坏了 gmail 的嵌套标签功能 - 有没有办法删除 \\Noselect 属性,或者避免一开始就创建它?

例子:

>> imap.create("foo/bar")
('OK', [b'Success'])
>> imap.list()
[b'(\\Noselect \\HasChildren) "/" "foo"', b'(\\HasNoChildren) "/" "foo/bar"',...
4

2 回答 2

3

我想出了一个解决方案——虽然不确定这是否是“最好的”方式。在一个命令中创建嵌套邮箱时,顶级邮箱会自动标记为 \\Noselect。虽然它可能很老套,但您可以通过显式创建每个级别来删除此标志。

例子:

folder = "abc/def/ghi/jkl"

target = ""

for level in folder.split('/'):
    target += "{}/".format(level)
    imap.create(target)

我会留下这个问题,看看是否有人有更好的解决方案。

于 2011-05-09T20:15:12.933 回答
2

bjeanes:只要我去掉尾随的层次分隔符,Sam 的解决方案就对我有用。

所以,如果我想创建嵌套文件夹 a/b/c,我首先创建纯“a”。如果我做一个 xlist,它会设置 hasNoChildren 标志。现在我创建“a/b”,xlist 现在将显示设置了“hasChildren”标志的“a”,以及设置了“hasNoChildren”标志的“a/b”。最后,我创建了“a/b/c”,现在“b”也设置了“hasChildren”标志。查看 gmail 网络界面也证实了这一点。

Sam:感谢您解决这个问题并发布解决方案。“Hacky”胜过“不工作”。:^)

于 2013-01-22T18:33:15.300 回答