Skip to main content
 首页 » 编程设计

Python之Imap Gmail 响应

2025年05月04日26daizhj

我正在为 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 ready for requests from 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 authenticated (Success)

提前谢谢你。

请您参考如下方法:

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