我正在为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
启动程序后,我只得到第一个命令的响应:
好的Gimap已准备好接受IPGOESHERE的要求47if12049394eef.11
能力IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS = DEFLATE a001 OK xxx@gmail.com XXX XXX经过身份验证 (成功)
提前谢谢。
答案 0 :(得分:1)
尝试使用\ r \ n,这是IMAP规范所要求的。