2

我正在为 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 的请求

  • CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE a001 OK xxx@gmail.com XXX XXX 认证(成功)

先感谢您。

4

1 回答 1

1

尝试使用 IMAP 规范要求的 \r\n。

于 2012-11-18T15:29:46.783 回答