如何在Google IMAP服务器上使用Python imap库运行XLIST命令?

2 投票
2 回答
999 浏览
提问于 2025-04-17 08:02

我想在Python库中运行XLIST命令,有谁知道怎么做吗?(在Python文档里没有关于这个命令的任何信息)。这个问题是针对这个问题的。

2 个回答

1

另一种解决这个问题的方法是使用一个叫做 IMAPClient 的第三方库。

这个库自带支持 XLIST 功能,可以直接使用

1

这个命令在imaplib里没有实现。

我知道这有点像变通的办法,但我真的需要运行XLIST,原因和你们一样。

我查看了imaplib源代码中list()是怎么实现的,于是我继承了imaplib的IMAP4_SSL类,并添加了xlist()命令。所以,在adv_imaplib.py里添加:

import imaplib

imaplib.Commands['XLIST'] =  ('AUTH', 'SELECTED')

class ADV_IMAP4_SSL(imaplib.IMAP4_SSL):

  def xlist(self, directory='""', pattern='*'):
    """(X)List mailbox names in directory matching pattern. Using Google's XLIST extension

    (typ, [data]) = <instance>.xlist(directory='""', pattern='*')

    'data' is list of XLIST responses.
    """
    name = 'XLIST'
    typ, dat = self._simple_command(name, directory, pattern)
    return self._untagged_response(typ, dat, name)

现在只需要创建ADV_IMAP4_SSL,而不是IMAP4_SSL,然后调用xlist(),对我来说是有效的。

撰写回答