IMAP fetch() 返回命令错误:BAD [b' 命令参数错误。12']

Amy*_*y D 3 imap python-3.x

我无法在网上找到示例/故障排除提示,并且不太确定我是否正确解释了文档。任何帮助将不胜感激。

我正在连接到电子邮件服务器,并且想要阅读电子邮件主题和正文。我首先像这样建立连接:

import imaplib
c = imaplib.IMAP4_SSL(hostname, port)
c.login(username, password)

foldername = 'INBOX/SSR'
c.select(str.encode(foldername), readonly = True)

today = datetime.date.today().strftime('%d-%b-%Y')
searchcriteria = '(SENTON '{}')'.format(today)
typ, msg_ids = c.search(None, searchcriteria)
msg_ids = [s.decode('ascii') for s in msg_ids]
Run Code Online (Sandbox Code Playgroud)

对于 msg_ids 中的 idnumber: print(c.fetch(idnumber, "(BODY.PEEK[HEADER])"))

代码、工作和输出看起来如预期,直到最后一行,此时,我得到

imaplib.error:FETCH 命令错误:BAD [b' 命令参数错误。12']

我的思路和随后的测试检查了以下可能的问题:

  1. 字节与字符串。我将输入转换回字节,但错误仍然存​​在
  2. 语法不正确:我尝试了其他命令,例如 BODY、SUBJECT 和 ENVELOPE,但仍然收到相同的消息。

我不确定如何解释该错误,也不知道从哪里开始。参考第 102 页以上的https://www.rfc-editor.org/rfc/rfc3501.html,我注意到这些值的标签不同,但不明白我的实现存在什么问题。我应该如何解释该错误?我的语法有什么问题?

PS 如果我错了,请纠正我,但 c.search 不应该更改我的目录,是吗?例如,通过选择文件夹名称,我“导航”到所选文件夹,但仅搜索返回值并且不应更改我的位置?

小智 6

我在尝试列出或选择新邮箱时遇到了同样的问题 -BAD [b\' Command Argument Error. 12\']就我而言,它不适用于 \xe2\x80\x9cSent Box\xe2\x80\x9d,但它适用于 \xe2\ x80\x9cOutbox\xe2\x80\x9d,所以空格符号就是点。

\n\n

所以它与 c.select(\'"{}"\'.format("Sent Box")...

\n\n

希望这些信息可以帮助您。

\n