我试图通过其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"
那么,有没有办法发送 + 字符,避免服务器将其解码为空格字符?
提前致谢。
编辑:我正在研究这里评论的解决方案,没有任何积极的结果。但是几天前,我的原始代码开始起作用了。我没有换过一行,所以我认为谷歌已修复了与此相关的内容。感谢您的评论。
答案 0 :(得分:0)
URLEncoder.encode(&#34; +&#34;,&#34; UTF-8&#34;);收益率&#34;%2B&#34;
替换&#34; +&#34;使用查询参数。即
URLEncoder.encode(&#34; rfc822msgid:&#34;,&#34; UTF-8&#34;);