如何在Google IMAP服务器上使用Python imap库运行XLIST命令?
我想在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(),对我来说是有效的。