我正在使用 GMail API 来检索电子邮件内容。我正在为正文获取以下 base64 编码数据:http: //hastebin.com/ovucoranam.md
但是当我通过 base64 解码器运行它时,它要么返回一个空字符串(错误),要么返回类似于 HTML 数据但带有一堆奇怪字符的东西。
帮助?
我正在使用 GMail API 来检索电子邮件内容。我正在为正文获取以下 base64 编码数据:http: //hastebin.com/ovucoranam.md
但是当我通过 base64 解码器运行它时,它要么返回一个空字符串(错误),要么返回类似于 HTML 数据但带有一堆奇怪字符的东西。
帮助?
我不确定你是否已经解决了,但 GmailGuy 是正确的。您需要将正文转换为 Base64 RFC 4648 标准。要点是您需要替换-
为+
和。_
/
我已经接受了您的原始输入并进行了替换:http ://hastebin.com/ukanavudaz
并使用base64decode.org对其进行解码,就可以了。
您需要使用URL(又名“web”)安全 base64 解码字母表(请参阅 rfc 4648),您似乎没有这样做。使用标准的 base64 字母有时可能会起作用,但并非总是如此(其中 2 个字符不同)。
文档似乎并没有一直提到这个重要的细节。这是它的一个地方: https ://developers.google.com/gmail/api/guides/drafts
此外,如果您的特定库不支持“URL 安全”字母表,那么您可以先对字符串进行字符串替换(“-”与“+”和“_”与“/”),然后进行正常的 base64 解码它。
我在解码消息对象响应中的“数据”字段时遇到了同样的问题Gmail API
。该Google Ruby API
库也没有正确解码文本。我发现我需要做一个url-safe base64 decode
:
@data = Base64.urlsafe_decode64(JSON.parse(@result.data.to_json)["payload"]["body"]["data"])
希望有帮助!
python 2.x 和 3.x 有一个示例:
decodedContents = base64.urlsafe_b64decode(payload["body"]["data"].encode('ASCII'))
If you only need to decode for displaying purposes, consider using atob to decode the messages in JavaScript frontend (see ref).
我在使用 API 结果时发现,一旦我深入到正文,我就可以选择在可用方法中进行解码。
val message = mService!!.users().messages().get(user, id).setFormat("full").execute()
println("Message snippet: " + message.snippet)
if(message.payload.mimeType == "text/plain"){
val body = message.payload.body.decodeData() // getValue("body")
Log.i("BODY", body.toString(Charset.defaultCharset()))
}
结果:-
com.example.quickstart I/BODY: ISOLATE NORMAL: 514471,Fap, South Point Rolleston, 55 Faringdon Boulevard, Rolleston, 2018 年 5 月 30 日 20:59:21
我将base64测试处理为一个文件(b64.txt),然后使用带有-d选项的base64(来自coreutils)对其进行base64解码(参见http://linux.die.net/man/1/base64),然后我得到完全可读的文本。我使用的命令是:
cat b64.txt | base64 -d