Gmail的imap扩展命令X-GM-RAW允许我在使用ascii查询字符串时执行搜索。如果在查询中使用utf-8字符,则imap返回错误响应。
如何编码utf-8输入字符串,以便X-GM-RAW搜索能够正常工作。我不想放松搜索特定字段的灵活性,如“subject”或“rfc833msgid”
由于
答案 0 :(得分:1)
指定CHARSET UTF-8并以文字形式发送UTF-8搜索词。例如,要搜索你好,当以UTF-8编码时,这是6个字节长:
A SEARCH CHARSET UTF-8 X-GM-RAW {6}
+ go ahead
你好
* SEARCH 15
a OK SEARCH completed (Success)
在这个例子中,你实际上会在第三行发送6字节的UTF-8编码。
这适用于任何接受astring的SEARCH关键字,包括SUBJECT和HEADER MESSAGE-ID。
答案 1 :(得分:0)
IMAP不是8-bit clean,因此它必须使用各种不同的编码来表示任何8位数据。
对于文件夹和标签等内容,IMAP4使用 Modified UTF-7 来表示这些字符。方便地,以修改后的utf7编码的ascii数据编码为自身,因此通常不需要做任何特殊的事情。
对于消息标题(包括主题),文字编码为 Mime words 。
最后附件通常编码为 Base64 或引用可打印
我最好的猜测是GMail使用修改后的utf7进行X-GM-RAW查询。我发现的修改过的utf7的最佳参考实现是在IMAPClient python library
中希望这有帮助!