我正在尝试在gmail IMAP帐户中创建目录树。我在imaplib中使用了“create()”命令,但它似乎将\\ Noselect属性添加到创建的文件夹中。这打破了gmail的嵌套标签功能 - 有没有办法删除\\ Noselect属性,或者首先避免它被创建?
示例:
>> imap.create("foo/bar")
('OK', [b'Success'])
>> imap.list()
[b'(\\Noselect \\HasChildren) "/" "foo"', b'(\\HasNoChildren) "/" "foo/bar"',...
答案 0 :(得分:3)
我找到了一个解决方案 - 不确定它是否是“最佳”方式。在一个命令中创建嵌套邮箱时,顶级邮箱会自动标记为\\ Noselect。虽然它可能很糟糕,但您可以通过明确创建每个级别来删除此标志。
示例:
folder = "abc/def/ghi/jkl"
target = ""
for level in folder.split('/'):
target += "{}/".format(level)
imap.create(target)
我会留下问题,看看是否有人有更好的解决方案。
答案 1 :(得分:2)
bjeanes:只要我不使用尾随的层次结构分隔符,Sam的解决方案就适用于我。
所以,如果我想创建嵌套文件夹a / b / c,我首先创建简单的“a”。如果我执行xlist,则设置hasNoChildren标志。现在我创建“a / b”,xlist现在将显示设置为“hasChildren”标志的“a”,设置“hasNoChildren”标志的“a / b”。最后,我创建了“a / b / c”,现在“b”也设置了“hasChildren”标志。看一下gmail web界面也证实了这一点。
萨姆:谢谢你搞清楚并发布解决方案。 “Hacky”击败“不工作”。 :^)