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

时间:2012-07-17 06:54:03

标签: utf-8 gmail imap gmail-imap

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搜索能够正常工作。我不想放松搜索特定字段的灵活性,如“subject”或“rfc833msgid”

由于

2 个答案:

答案 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

希望这有帮助!