2012-11-18 106 views
2

我的Gmail編寫一個簡單的IMAP客戶端。因爲它是一個使用套接字等的任務,所以我不能使用python的imaplib庫。我在代碼中遇到了一個問題:的Python - IMAP訪問Gmail響應

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 

一切正常,直到第二個命令被髮送。我不太確定,現在我在做什麼。

這裏是送出數據這是問:

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 

啓動程序後,我得到的迴應只是第一個命令:從IPGOESHERE 47if12049394eef.11請求

  • OK GIMAP準備

  • CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS = DEFLATE A001 OK [email protected] XXX XXX認證 (成功)

預先感謝您。

+0

你可以發佈sendData的代碼嗎?此外,您的縮進在CAPABILITY if語句下關閉。你能發佈你得到的錯誤/堆棧跟蹤嗎? – John

+0

縮進沒有錯誤,它由編譯器檢查。沒有錯誤。 –

回答

1

嘗試使用\ r \ n,這個由IMAP規範要求。

+0

完全正確!非常感謝! –