错误通过rfc822msgid查询消息

时间:2015-10-13 12:32:56

标签: python gmail-api google-api-python-client

我试图通过其Message-ID获取消息。 Gmail API没有 get()方法来传递消息ID,所以我必须 list()首先传递 q 参数如下所示:

q="rfc822msgid:%s" % message_id

响应会带来一个包含单条消息的列表,就像希望的那样。然后,我使用 get()方法通过 Google样式标识符检索邮件。除非Message-ID包含 + 字符,否则它就像魅力一样:

message_id="a+b@c"

在这种情况下,Google Api客户端会请求此网址:

url="https://www.googleapis.com/gmail/v1/users/me/messages?q=rfc822msgid%3Aa+b%40c&alt=json"

我认为客户正在使用 safe =&#34; +&#34; 执行 quote_plus()以避免 + <的编码/ strong>性格。但这会在注释案例中引起问题,因为服务器将 + 字符解释为空格字符,因此Message-ID不再有效:

message_id="a b@c"

我尝试为其引用的表示形式(%2B )切换 + 字符,但是当客户端对URL进行编码时,Message-ID变得非常糟糕,因为引用(quote())

message_id="a%252Bb%40c"

那么,有没有办法发送 + 字符,避免服务器将其解码为空格字符?

提前致谢。

编辑:我正在研究这里评论的解决方案,没有任何积极的结果。但是几天前,我的原始代码开始起作用了。我没有换过一行,所以我认为谷歌已修复了与此相关的内容。感谢您的评论。

1 个答案:

答案 0 :(得分:0)

URLEncoder.encode(&#34; +&#34;,&#34; UTF-8&#34;);收益率&#34;%2B&#34;

替换&#34; +&#34;使用查询参数。即

URLEncoder.encode(&#34; rfc822msgid:&#34;,&#34; UTF-8&#34;);