我想使用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)
答案 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')