【发布时间】:2012-11-18 08:53:46
【问题描述】:
我正在为 gmail 编写一个简单的 IMAP 客户端。由于它是使用套接字等的分配,我不能使用 python 的 imaplib 库。我在这段代码中遇到了问题:
def connect(self, server, username, password, port=993):
self.socket.connect((server, port))
response = self.socket.recv(2048)
if response.startswith('NO' or 'BAD'):
return False
print response
# send username
self.sendData('a001 login {0} {1}\n'.format(username, password))
response = self.socket.recv(2048)
if response.startswith('NO' or 'BAD'):
return False
print response
self.sendData('a002 CAPABILITY\n')
response = self.socket.recv(2048)
if response.startswith('NO' or 'BAD'):
print response
return False
print response
return True
一切正常,直到发送第二个命令。我不太确定,我现在处于什么状态。
这里是被问到的 sendData:
def sendData(self, command):
lenght = len(command)
totalSendBytes = 0
while (totalSendBytes < lenght):
bytesSend = self.socket.send(command[totalSendBytes:])
if bytesSend <= 0:
return False
totalSendBytes += bytesSend
return True
启动程序后,我只收到第一个命令的响应:
OK Gimap 准备好接受来自 IPGOESHERE 47if12049394eef.11 的请求
功能 IMAP4rev1 取消选择空闲命名空间配额 ID XLIST 儿童 X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE a001 OK xxx@gmail.com XXX XXX 认证 (成功)
提前谢谢你。
【问题讨论】:
-
你能发布 sendData 的代码吗?此外,您的缩进在 CAPABILITY if 语句下是关闭的。你能发布你得到的错误/堆栈跟踪吗?
-
缩进没有错误,是编译器检查的。没有错误。