提问者:小点点

为什么在imaplib搜索方法中要写None


下面是代码:

box = imaplib.IMAP4_SSL(HOST,PORT)
box.login(sender,password)
box.select("INBOX")
data = box.search(None, "all")

我不明白一件事,为什么我必须在搜索方法中写None?我发现的每一个关于使用imaplib的教程,都说我们应该写None,但是没有人解释为什么。有人能给我一些关于这方面的信息吗?


共1个答案

匿名用户

这就是有时阅读文档很重要的地方,因为它将告诉您比教程更多的东西:

https://docs.python.org/3.8/library/imaplib.html#imaplib.imap4.搜索

从文档中-搜索方法的签名是:

IMAP4.搜索(字符集,条件[,...])

在邮箱中搜索匹配的邮件。 charset可以是None,在这种情况下,不会在向服务器发出的请求中指定任何charset。 IMAP协议要求至少指定一个标准; 当服务器返回错误时将引发异常。 如果使用enable()命令启用了utf8=accept功能,则charset必须为None。

也就是说,如果其中之一,第一个参数将为None:

  • 您并不关心搜索过程中使用的字符集
  • 启用邮箱时指定了UTF8=Accept

因为您还没有使用enable,所以第一个条件适用,因此您的代码段正在搜索收件箱中所有主题为'all'的电子邮件。