Python imaplib fetch 返回"Couldn't parse command"错误



我已经找了几个小时这个错误,但找不到任何能解决我问题的东西。在做这件事的时候,我正在关注一篇关于这个主题的文章。我以前甚至没有犯过这个错误。我从提取部分了解到的是,它将消息从我的盒子中分离出来。尝试了不同的方法,但似乎对我无效。编辑:我觉得我的问题有点不对。实际上,我需要知道我做错了什么,或者我应该改变什么部分。

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:UsersTeknolojiDesktopProjectsPython ProjectsPhytonDiscordBotDiscordBot2Main.py", line 28, in <module>
res, msg = imap.fetch(str(i), "(RFC822)")
File "C:UsersTeknolojiAppDataLocalProgramsPythonPython38-32libimaplib.py", line 539, in fetch
typ, dat = self._simple_command(name, message_set, message_parts)
File "C:UsersTeknolojiAppDataLocalProgramsPythonPython38-32libimaplib.py", line 1205, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "C:UsersTeknolojiAppDataLocalProgramsPythonPython38-32libimaplib.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

您的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):

相关内容

最新更新