当 Message-Id 包含“%”时,Gmail 中的 IMAP SEARCH 失败

问题描述

我正在尝试使用 IMAP 对 Gmail 邮箱执行 IMAP 搜索。特别是,我试图找到具有已知 Message-ID 标头的消息的 UID。我知道这条消息存在,因为我刚刚添加了它(我可以在以下搜索查询 Rfc822msgid:<D7DA993B.B30DC%[email protected]ottingham.ac.uk> 在 Gmail 用户界面中)。仅当 Message-ID 字段包含“%”时才会出现此问题。我试图以多种方式引用它,但没有运气:

没有引用:

SEND: "000004 UID SEARCH HEADER Message-ID <D7DA993B.B30DC%[email protected]ottingham.ac.uk>"
SEND: "\r\n"
RECV: "000004 BAD Could not parse command\r"

反斜杠引用:

SEND: "000004 UID SEARCH HEADER Message-ID <D7DA993B.B30DC\\%[email protected]ottingham.ac.uk>"
SEND: "\r\n"
RECV: "000004 BAD Could not parse command\r"

反斜杠和双引号:

SEND: "000004 UID SEARCH HEADER Message-ID \"<D7DA993B.B30D\\%[email protected]ottingham.ac.uk>\""
SEND: "\r\n"
RECV: "000004 BAD Could not parse command\r"

最后,只使用双引号没有报错,但是找不到消息:

SEND: "000004 UID SEARCH HEADER Message-ID \"<D7DA993B.B30DC%[email protected]ottingham.ac.uk>\""
SEND: "\r\n"
RECV: "* SEARCH\r"
RECV: "000004 OK SEARCH completed (Success)\r"

在此 question 之后,我还尝试搜索消息 ID 的片段,但没有成功:

HaskellNet-SSL SEND: "000004 UID SEARCH HEADER Message-ID D7DA993B.B30DC HEADER Message-ID [email protected]ottingham.ac.uk"
HaskellNet-SSL SEND: "\r\n"
HaskellNet-SSL RECV: "* SEARCH\r"
HaskellNet-SSL RECV: "000004 OK SEARCH completed (Success)\r"

如何格式化搜索查询以查找 Message-Id 中带有“%”的消息?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)