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

2番目のコマンドが送信されるまで、すべてが正常に機能します。私は本当によくわかりません、私が今何をしているのか。

質問された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

プログラムを起動した後、最初のコマンドに対してのみ応答があります。

  • OKGimapはIPGOESHERE47if12049394eef.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 に答える