Python的IMAP库支持哪些线程算法?

时间:2016-05-24 20:18:09

标签: python email python-3.x imap

imaplib库中的documentation for IMAP4.thread()

  

thread命令是search的变体,具有结果的线程语义。返回的数据包含一个空格分隔的线程成员列表。

     

线程成员由零个或多个消息编号组成,用空格分隔,表示连续的父和子。

     

线程在 search_criterion 参数之前有两个参数; threading_algorithm ,以及搜索字符集

我不清楚如何使用 threading_algorithm 参数。文档未指明默认值,source code for the IMAP4.thread() function

def thread(self, threading_algorithm, charset, *search_criteria):
        """IMAPrev1 extension THREAD command.

        (type, [data]) = <instance>.thread(threading_algorithm, charset, search_criteria, ...)
        """

        name = 'THREAD'
        typ, dat = self._simple_command(name, threading_algorithm, charset, *search_criteria)
        return self._untagged_response(typ, dat, name)
即使在深入研究_simple_command辅助函数之后,

也没有给我任何想法。

这个论点应该用什么?是否有其他文件?

1 个答案:

答案 0 :(得分:5)

这取决于服务器; CAPABILITIES响应应告诉您服务器支持的线程算法,在THREAD = keys下。

例如:

* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION ID] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc.  See COPYING for distribution information.

此服务器支持ORDEREDSUBJECT和REFERENCES算法。

基准算法的描述见IMAP SORT and THREAD RFC

imaplib是一个非常低级别的库,您需要自己解析响应。