【问题标题】:Python imaplib fetch returns "Couldn't parse command" errorPython imaplib fetch 返回“无法解析命令”错误
【发布时间】:2021-02-28 01:20:19
【问题描述】:

我一直在寻找这个错误几个小时,但找不到任何可以解决我的问题的方法。在执行此操作时,我正在关注有关此主题的文章。我之前什至没有收到这个错误。我从获取部分了解到的是它正在将消息与我的盒子分开。尝试了不同的方法,但似乎没有什么对我有用。 编辑:我认为我的问题有点错误。我实际上需要知道我做错了什么或者我应该改变哪一部分。

dic_path = "Mails\\"
username = "username@gmail.com"
password = "password"

imap = imaplib.IMAP4_SSL("imap.gmail.com")

imap.login(username, password)

status, messages = imap.select()

N = 10

messages = int(messages[0])
for i in range(messages, messages-N, -1):
    res, msg = imap.fetch(str(i), "(RFC822)")
for response in msg:
    if isinstance(response, tuple):
        # parse a bytes email into a message object
        msg = email.message_from_bytes(response[1])
        # decode the email subject
        subject = decode_header(msg["Subject"])[0][0]

错误;

Traceback (most recent call last):
  File "C:\Users\Teknoloji\Desktop\Projects\Python Projects\Phyton\DiscordBot\DiscordBot2\Main.py", line 28, in <module>
    res, msg = imap.fetch(str(i), "(RFC822)")
  File "C:\Users\Teknoloji\AppData\Local\Programs\Python\Python38-32\lib\imaplib.py", line 539, in fetch
    typ, dat = self._simple_command(name, message_set, message_parts)
  File "C:\Users\Teknoloji\AppData\Local\Programs\Python\Python38-32\lib\imaplib.py", line 1205, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "C:\Users\Teknoloji\AppData\Local\Programs\Python\Python38-32\lib\imaplib.py", line 1030, in _command_complete
    raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: FETCH command error: BAD [b'Could not parse command']

调试跟踪:https://pastebin.com/raw/1fAPzGsv

【问题讨论】:

  • 能否请您打开imaplib debugging并粘贴到协议跟踪中?
  • 我是个小菜鸟,你能告诉我如何打开它并找到踪迹吗?
  • imap.debug = 5 在您的登录命令之前,然后查看控制台中的输出。
  • 我用原始的 pastebin 链接编辑了我的帖子

标签: python python-3.x gmail imaplib


【解决方案1】:

您的 pastebin 表明您的邮箱中有 8 封邮件,但您正在尝试获取最近的 10 封邮件。

 46:51.53 < b'* 8 EXISTS'

你最终倒数到零,这是一个无效的消息编号:

46:52.45 > b'MAAK11 FETCH 0 (RFC822)'
46:52.53 < b'MAAK11 BAD Could not parse command'

然后服务器抛出一个错误。

所以,请确保您永远不会低于第一条消息:

for i in range(messages, max(messages-N, 1), -1):

【讨论】:

  • 非常感谢!我应该想到这一点。再次感谢您!
猜你喜欢
  • 1970-01-01
  • 2015-04-19
  • 2016-06-23
  • 2015-01-14
  • 2018-09-21
  • 2011-07-09
  • 2021-02-26
  • 1970-01-01
  • 2012-09-11
相关资源
最近更新 更多