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認証済み(成功)
前もって感謝します。