当前位置: 首页 > 知识库问答 >
问题:

Python-Imap Gmail响应

沈华晖
2023-03-14

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

启动程序后,我只得到对第一个命令的响应:

>

  • 好,Gimap已准备好接受IPGOESHERE 47if12049394eef.11的请求

    功能IMAP4rev1取消选择空闲命名空间配额ID XLIST CHILDREN X-GM-EXT-1 uid plus COMPRESS = DEFLATE a001 OK xxx@gmail.com XXX XXX已验证(成功)

    提前谢谢你。

  • 共有1个答案

    骆磊
    2023-03-14

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

     类似资料:
    • 问题内容: 我正在尝试将服务器端Ajax响应脚本转换为,但显然无法正常工作。 这是服务器端脚本: 这是转换后的代码 我正在使用simplejson对Python列表进行编码(因此它将返回JSON数组)。我还不能弄清楚问题所在。但是我认为我对“回声”做错了。 问题答案: 我通常使用字典,而不是列表来返回JSON内容。 在Django 1.7之前的版本中,你将像这样返回它: 对于Django 1.7+

    • 问题内容: 有没有一种方法可以返回具有特定属性的响应(来自对象或类似对象),以使它不会再次呈现页面,也不会执行任何其他操作。我正在尝试在服务器上运行代码而不生成任何输出 一个简单的“不返回”会产生: 这应该是可能的,因为以下内容仅下载文件而不渲染模板: 问题答案: 你回应的请求,HTTP服务器必须返回的东西。HTTP“空响应”响应为: 请注意,将文件返回到浏览器不是空响应,只是与HTML响应不同。

    • 问题内容: 我正在使用python 2.7,我想解析已经从文本文件中提取的字符串HTTP响应字段。最简单的方法是什么?我可以使用BaseHTTPServer解析请求,但无法为响应找到内容。 我的回复非常标准,并采用以下格式 提前致谢, 问题答案: 您可能会发现这很有用,请记住HTTPResponse并非旨在“由用户直接实例化”。 还要注意,响应字符串中的content- length标头可能不再有

    • 问题内容: 我正在使用以下代码从api端点登录和检索数据,但似乎响应已编码,因此我无法读取内容。我正在使用请求requestes-0.0.1 当我在控制台上打印相同的响应 有人可以告诉我如何解码和读取响应中的数据 问题答案: 响应通过brotli压缩进行编码。标准库不支持此压缩方法。您可以从pypi安装第三方软件包以将其解压缩- 有许多可用的软件包。 例如 如果您不想避免安装第三方模块,请从请求中

    • 问题内容: 我正在尝试使用Python获取URL,响应为JSON。但是,当我跑步时 html的类型为str,我期望使用JSON。有什么办法可以将响应捕获为JSON或python字典而不是str。 问题答案: 如果URL返回有效的JSON编码数据,请使用该库对其进行解码:

    • 问题内容: 我有一个函数,可使用Pandas分析CSV文件并生成带有摘要信息的字典。我想从Flask视图返回结果作为响应。如何返回JSON响应? 问题答案: 将摘要数据传递给该函数,该函数返回JSON响应。 从Flask 0.11开始,你可以将任何可序列化的类型(不仅是dict)传递为顶级对象。