python3 imaplib搜索函数编码

python3 imaplib search function encoding

谁能告诉我如何在 python 中使用 imaplib 正确搜索。电子邮件服务器是 Microsoft Exchange - 似乎有问题,但我想要 python/imaplib 方面的解决方案。 https://github.com/barbushin/php-imap/issues/128

我目前使用:

import imaplib
M = imaplib.IMAP4_SSL(host_name, port_name)
M.login(u, p)
M.select()
s_str = 'hello'
M.search(s_str)

我收到以下错误:

>>> M.search(s_str)
('NO', [b'[BADCHARSET (US-ASCII)] The specified charset is not supported.'])

search 采用两个或多个参数、编码和搜索规范。您可以传递 None 作为编码,而不指定一个。 hello 不是有效的字符集。

您还需要指定要搜索的内容:IMAP 具有复杂的搜索语言,详见 RFC3501§6.4.4;而 imaplib 没有为它提供高级接口。

因此,考虑到这两点,您需要执行以下操作:

search(None, 'BODY', '"HELLO"')

search(None, 'FROM', '"HELLO"')