MIME电子邮件的Base64解码不起作用(GMail API)

And*_*Hin 12 email base64 mime character-encoding gmail-api

我正在使用GMail API来检索电子邮件内容.我正在为身体获得以下base64编码数据:http://hastebin.com/ovucoranam.md

但是,当我通过base64解码器运行它时,它返回一个空字符串(错误)或类似于HTML数据的东西,但有一堆奇怪的字符.

救命?

urb*_*ter 21

我不确定你是否已经解决了,但GmailGuy是正确的.您需要将正文转换为Base64 RFC 4648标准.该JIST是你需要更换-+_/.

我已经采取了您的原始输入并做了替换:http://hastebin.com/ukanavudaz

并使用base64decode.org对其进行解码,这很好.


Eri*_*c D 12

您需要使用URL(也称为"web")安全base64解码字母表(请参阅rfc 4648),它看起来并不像您正在做的那样.使用标准base64字母表有时可以工作但不总是(2个字符不同).

文档似乎没有一直提到这个重要的细节.这是其中的一个:https: //developers.google.com/gmail/api/guides/drafts

此外,如果您的特定库不支持"URL安全"字母表,那么您可以首先对字符串进行字符串替换(" - "表示"+","_"表示"/")然后执行正常的base64解码它.

  • 如果您的特定库不支持"URL安全"字母表,那么您可以首先对字符串进行字符串替换(" - "表示"+","_"表示"/"),然后对其执行正常的base64解码.希望有所帮助. (2认同)

小智 7

我有同样的问题解码消息对象响应中的'数据'字段Gmail API.该Google Ruby API库也没有正确解码文本.我发现我需要做一个url-safe base64 decode:

@data = Base64.urlsafe_decode64(JSON.parse(@result.data.to_json)["payload"]["body"]["data"])
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!


mti*_*935 -1

我将base64测试复制到一个文件(b64.txt),然后使用带有-d选项的base64(来自coreutils)对其进行base64解码(请参阅http://linux.die.net/man/1/base64),然后我得到完全可读的文本。我使用的命令是:

cat b64.txt | base64 -d
Run Code Online (Sandbox Code Playgroud)