2017-04-11 58 views
0

有人可以指出如何正确使用python中的imaplib进行搜索。电子邮件服务器是Microsoft Exchange - 似乎有问题,但我想从python/imaplib方面提供解决方案。 https://github.com/barbushin/php-imap/issues/128python3 imaplib搜索功能编码

我至今使用:

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.']) 
+0

您也可能想给IMAPClient一展身手。如果您将搜索条件作为unicode字符串传递,它会为您处理大部分搜索编码方面的问题。 项目:https://github.com/mjs/imapclient; 相关文档:http://imapclient.readthedocs.io/en/stable/#imapclient.IMAPClient.search –

回答

1

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

您还需要指定要搜索的内容:IMAP具有在RFC3501§6.4.4中详细描述的复杂搜索语言; imaplib不提供高级接口。

所以,用这两个记住,你需要做的是这样的:

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

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