当搜索文本包含感叹号(!),&符号(&)等时,IMAP"搜索标题"命令失败

roc*_*eys 7 search gmail imap

我通过python访问GMail的IMAP接口.我运行这样的命令:

UID SEARCH HEADER Message-ID "abcdef@abc.com"
Run Code Online (Sandbox Code Playgroud)

成功(返回匹配消息的1个UID,如果不存在则返回0).但是,如果搜索文本包含某些字符(例如&或!),则会在该点截断搜索文本.这意味着:

UID SEARCH HEADER Message-ID "!abcdef@abc.com"
Run Code Online (Sandbox Code Playgroud)

被对待是一样的

UID SEARCH HEADER Message-ID ""
Run Code Online (Sandbox Code Playgroud)

也:

UID SEARCH HEADER Message-ID "abc!def@abc.com"
Run Code Online (Sandbox Code Playgroud)

被视为:

UID SEARCH HEADER Message-ID "abc"
Run Code Online (Sandbox Code Playgroud)

我已经完成了IMAP语言规范,而且从ABNF语言规范来看,这些字符似乎应该是有效的.为什么gmail会在"!"处截断这些搜索短语 和"&"字符?有办法逃脱他们吗?(我试过了!,作为一个编码严重的字符串失败了).是否有RFC或doc显示真正应该接受的内容?这是gmail的imap实现中的错误吗?

我也试过文字格式,结果相同:

UID SEARCH HEADER Message-ID {15}
abc!def@abc.com
Run Code Online (Sandbox Code Playgroud)

仍被视为:

UID SEARCH HEADER Message-ID {3}
abc
Run Code Online (Sandbox Code Playgroud)

谢谢!

IMAP RFC3501搜索命令:http ://tools.ietf.org/html/rfc3501#section-6.4.4 正式语法:http://tools.ietf.org/html/rfc3501#section-9

小智 2

几个月来我自己一直在解决这个问题。

搜索标头消息 ID <-!&!...>

最终跳过了一些以“<-”开头的 MsgId 搜索。另请参阅 &! 的问题...不知道如何解决这个问题。

您收到过 Google 关于此错误的消息吗?

非常感谢