搜索UTF-8字符串使用Gmail X-GM-RAW IMAP命令(Search utf-8 str

2019-09-19 14:23发布

Gmail的IMAP扩展命令X-GM-RAW允许,如果我使用ASCII查询字符串我执行搜索。 如果UTF-8字符在查询中使用的IMAP返回坏响应。

https://developers.google.com/google-apps/gmail/imap_extensions#extension_of_the_search_command_x-gm-raw

应如何utf-8的输入字符串进行编码,使得X-GM-RAW搜索将正常工作。 我不想失去灵活性,搜索特定的领域,如“主题”或“rfc833msgid”

谢谢

Answer 1:

指定字符集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,包括主体和头部消息-ID的任何搜索关键字工作。



Answer 2:

IMAP不是8位的清洁 ,因此具有使用多种不同的编码来表示任意8位数据。

对于像文件夹和标签 IMAP4采用改性UTF-7来表示这些字符。 方便的是,在修改UTF7编码的ASCII数据编码为自身,这样做通常没有什么特别的需求。

对于消息 (包括受试者)的文本被编码为默词语

最后atttachments通常编码为Base64的引用打印

我最好的猜测是,Gmail使用修改UTF7他们的X-GM-RAW查询。 我发现改性UTF7最好的参考实现是在IMAPClient Python库

希望这可以帮助!



文章来源: Search utf-8 string with Gmail X-GM-RAW IMAP command