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

私は解決策を見つけました-しかし、それが「最良の」方法であるかどうかはわかりません。1つのコマンドでネストされたメールボックスを作成すると、最上位のメールボックスに\\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のWebインターフェイスを見ると、これも確認できます。

サム:これを理解して解決策を投稿してくれてありがとう。「ハッキー」は「機能しない」よりも優れています。:^)

于 2013-01-22T18:33:15.300 に答える