Python3 IMAP搜索特殊字符

时间:2015-02-06 22:13:15

标签: search python-3.x character imap

我想使用Python3找到关于IMAP的注释,它是IMAP扩展。我尝试搜索包含特殊字符的主题,如下例所示。有没有办法可以将搜索字符串编码为IMAP兼容?

self.connection.search(None, 'ALL', 'SUBJECT "büro"')

返回

UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 10: ordinal not in range(128)

2 个答案:

答案 0 :(得分:2)

您应该将UTF-8编码的字符串作为搜索参数传递,并且还需要提及" CHARSET UTF-8"在搜索查询中。

有点像这样的UID SEARCH CHARSET utf-8"搜索字符串"。这里"搜索字符串"应该是utf-8编码。

答案 1 :(得分:0)

如果搜索字符串中包含特殊字符,则必须根据https://tools.ietf.org/html/rfc3501#page-54使用文字。 Python imaplib不会对搜索命令执行此操作。因此需要使用解决方法:

    imap.literal = subject.encode('UTF-8')
    status, data = imap.uid('SEARCH', 'CHARSET UTF-8 SUBJECT')
    # fetch is also must be used via uid command after this

没有uid版本:

    imap.literal = subject.encode('UTF-8')
    typ, dat = imap._simple_command('SEARCH', "CHARSET UTF-8 SUBJECT")
    status, data = imap._untagged_response(typ, dat, 'SEARCH')