Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x IMAP fetch()返回命令错误:错误[b';命令参数错误。12';]_Python 3.x_Imap - Fatal编程技术网

Python 3.x IMAP fetch()返回命令错误:错误[b';命令参数错误。12';]

Python 3.x IMAP fetch()返回命令错误:错误[b';命令参数错误。12';],python-3.x,imap,Python 3.x,Imap,我很难在网上找到示例/疑难解答提示,并且不太确定我是否正确解释了文档。如蒙协助,将不胜感激 我正在连接到电子邮件服务器,希望阅读电子邮件主题和正文。我首先是这样联系的: import imaplib c = imaplib.IMAP4_SSL(hostname, port) c.login(username, password) foldername = 'INBOX/SSR' c.select(str.encode(foldername), readonly = True) today =

我很难在网上找到示例/疑难解答提示,并且不太确定我是否正确解释了文档。如蒙协助,将不胜感激

我正在连接到电子邮件服务器,希望阅读电子邮件主题和正文。我首先是这样联系的:

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]
对于msg_ID中的idnumber: 打印(c.fetch(idnumber,”(BODY.PEEK[HEADER]))

代码和工作以及输出看起来与预期一样,直到最后一行,在这一点上,我得到

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

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

  • 字节与字符串。我将输入转换回字节,但错误保持不变
  • 语法不正确:我尝试了其他命令,如BODY、SUBJECT和ENVELOPE,但仍然得到了相同的消息
  • 我不知道如何解释这个错误,也不知道从哪里开始。参考pp.102+,我注意到这些值的标签不同,但不理解我的实现有什么问题。我应该如何解释错误?我的语法有什么问题


    如果我错了,请纠正我,但是c.search不应该更改我的目录,是吗?与中一样,通过选择foldername,我“导航”到所选文件夹,但仅搜索只返回值,不应更改我的位置?

    我在尝试列出或选择新邮箱时遇到了相同的问题-
    错误[b'命令参数错误。12']
    ,在我的情况下,它与“发送框”不起作用,但它与“发件箱”配合得很好,所以空间符号才是重点

    因此它使用了
    c.select(“{}”格式(“发送框”)…


    希望此信息能对您有所帮助。

    您的最后一行不正确
    msg\u id=[s.decode('ascii')表示msg\u id中的s]

    msg_ids是一个带有字节字符串的列表,而不是列表中的元素-例如:
    [b'123124125']


    将最后一行更改为
    msg\u ids=msg\u ids[0]。拆分(b“”)
    它将按预期工作。

    b BAD表示标记为“b”的命令包含语法错误。Imaplib将该标记分配给某个对象,因此下一步是增加imap对象的调试级别,并查看标记为“b”的AH的确切内容。我该如何做,增加调试级别?我不记得了。但我记得当我eded它,我在imaplib的主文档页面底部附近找到了它。搜索“debug”。谢谢。我会看一看。这里的技巧是在文件夹名称中添加双引号。然后它将是
    foldername='“INBOX/SSR”
    在我的情况下,这也很有效
    c.select('Bulk Mail')
    (但是
    c.select('Bulk Mail'))
    没有)