【问题标题】:Using imaplib, how can I create a mailbox without the \\NoSelect attribute使用 imaplib,如何创建没有 \\NoSelect 属性的邮箱
【发布时间】:2011-08-21 22:44:40
【问题描述】:

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

例子:

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

【问题讨论】:

    标签: python gmail imaplib gmail-imap


    【解决方案1】:

    bjeanes:Sam 的解决方案对我有效,只要我不使用尾随层次结构分隔符。

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

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

    【讨论】:

      【解决方案2】:

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

      例子:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 2019-09-15
        • 1970-01-01
        • 2014-10-03
        • 2015-04-24
        • 1970-01-01
        • 2022-11-08
        相关资源
        最近更新 更多