Python Twisted IMAP4客户端配额命令系列
更新这似乎是twisted处理未标记响应的方式,我发现的唯一一个示例似乎是迭代接收到的数据,并以某种方式收集对其命令的响应,尽管我不确定如何Python Twisted IMAP4客户端配额命令系列,python,imap,twisted,Python,Imap,Twisted,更新这似乎是twisted处理未标记响应的方式,我发现的唯一一个示例似乎是迭代接收到的数据,并以某种方式收集对其命令的响应,尽管我不确定如何 我正在尝试实现RFC2087()中定义的IMAP4配额命令 代码-ImapClient class SimpleIMAP4Client(imap4.IMAP4Client): """ A client with callbacks for greeting messages from an IMAP server.
我正在尝试实现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)
输出
Fetching storage space
>0005 GETQUOTAROOT INBOX
<* QUOTAROOT "INBOX" ""
<* QUOTA "" (STORAGE 171609 10584342)
<0005 OK Success
Got Quota
([], 'OK Success')
获取存储空间
>0005 GETQUOTAROOT收件箱
由于IMAP4协议将大量不同类型的信息混合在一起作为“未标记的响应”,因此您可能还需要更新IMAP4客户端实现中解析代码的其他部分
具体来说,请看一下twisted.mail.imap4.Command
及其finish
方法。另请查看twisted.mail.imap4.IMAP4Client.\u extraInfo
,这是作为unusedCallback
传递给命令的内容。finish
首先,您可以检查配额命令的未标记响应是否正在发送到\u extraInfo
(然后被删除(很好,记录在案))
如果是这样,我怀疑您想教命令
识别QUOTA和QUOTAROOT对QUOTA命令的未标记响应,以便它收集它们并将它们作为触发其延迟
的结果的一部分发送
如果没有,您可能需要深入了解命令的逻辑。完成以查看数据的最终位置
您可能还希望实际实现命令.wantResponse
功能,该功能目前似乎只是部分形成(即,许多客户端代码试图将有趣的值发送到命令
以初始化该属性,但据我所知,实际上没有任何东西使用该属性的值)。谢谢,据我所见,parsing code Command.finish只是使用了一组预设的标记?这篇文章有点旧,但它帮助我解决了一个相关的问题,即教twisted如何识别RFC5256THREAD
命令。
Fetching storage space
>0005 GETQUOTAROOT INBOX
<* QUOTAROOT "INBOX" ""
<* QUOTA "" (STORAGE 171609 10584342)
<0005 OK Success
Got Quota
([], 'OK Success')