Twisted IMAP4客户端配额命令系列

2024-09-30 04:33:29 发布

您现在位置:Python中文网/ 问答频道 /正文

更新twisted似乎是处理未标记响应的方式,我发现的唯一一个例子似乎是迭代接收到的数据,并以某种方式收集对其命令的响应,但我不确定如何。。。在


我尝试实现rfc2087(http://tools.ietf.org/html/rfc2087)中定义的IMAP4配额命令。在

代码-ImapClient

class SimpleIMAP4Client(imap4.IMAP4Client):
    """
        A client with callbacks for greeting messages from an IMAP server.
        """
    greetDeferred = None

    def serverGreeting(self, caps):
        self.serverCapabilities = caps
        if self.greetDeferred is not None:
            d, self.greetDeferred = self.greetDeferred, None
            d.callback(self)

    def lineReceived(self, line):
        print "<" + str(line)
        return imap4.IMAP4Client.lineReceived(self, line)

    def sendLine(self, line):
        print ">" + str(line)
        return imap4.IMAP4Client.sendLine(self, line)

代码QUOTAROOT实现

^{pr2}$

输出

^{3}$

所以我得到了数据,但结果并不包含,我想这是因为它们是未标记的响应?在


Tags: 数据代码标记命令selfnonedef方式
1条回答
网友
1楼 · 发布于 2024-09-30 04:33:29

由于IMAP4协议将许多不同类型的信息混合在一起作为“未标记的响应”,您可能还需要更新IMAP4客户机实现中解析代码的其他部分。在

具体来说,看看twisted.mail.imap4.Command及其finish方法。还要看一下twisted.mail.imap4.IMAP4Client._extraInfo,这是作为unusedCallback传递给Command.finish的内容。在

首先,您可以检查是否将对QUOTA命令的未标记响应发送到_extraInfo(然后删除(好吧,记录))。在

如果是这样的话,我怀疑您想教Command识别对QUOTA命令的未标记的响应,以便它收集这些响应并将它们作为其Deferred的结果的一部分发送。在

如果不是这样,您可能需要深入研究Command.finish的逻辑,看看数据会在哪里结束。在

您可能还想实际实现Command.wantResponse特性,它目前似乎只是部分形成的(即,许多客户机代码尝试将有趣的值发送到Command中以初始化该属性,但据我所知,实际上没有任何内容使用该属性的值)。在

相关问题 更多 >

    热门问题