Email Base64解码MIME电子邮件不工作(GMail API)
我正在使用GMail API检索电子邮件内容。我正在获取身体的以下base64编码数据: 但是当我通过base64解码器运行它时,它要么返回一个空字符串(错误),要么返回一些类似于HTML数据但带有一堆奇怪字符的内容Email Base64解码MIME电子邮件不工作(GMail API),email,character-encoding,base64,mime,gmail-api,Email,Character Encoding,Base64,Mime,Gmail Api,我正在使用GMail API检索电子邮件内容。我正在获取身体的以下base64编码数据: 但是当我通过base64解码器运行它时,它要么返回一个空字符串(错误),要么返回一些类似于HTML数据但带有一堆奇怪字符的内容 帮助?我将base64测试处理成一个文件(b64.txt),然后base64使用base64(来自coreutils)和-d选项(请参阅)对其进行解码,得到了完全可读的文本。我使用的命令是: cat b64.txt | base64 -d 您需要使用URL(又名“web”)安全的
帮助?我将base64测试处理成一个文件(b64.txt),然后base64使用base64(来自coreutils)和-d选项(请参阅)对其进行解码,得到了完全可读的文本。我使用的命令是:
cat b64.txt | base64 -d
您需要使用URL(又名“web”)安全的base64解码字母表(请参阅RFC4648),而您似乎没有这样做。使用标准的base64字母有时可能有效,但并不总是有效(其中两个字符不同)
文档似乎没有持续提到这个重要的细节。但这里有一个例子:
另外,如果您的特定库不支持“URL安全”字母表,那么您可以先对字符串进行字符串替换(“-”加“+”和“”加“/”),然后对其进行常规的base64解码。我不确定您是否已经解决了这个问题,但Gmail Guy是正确的。您需要将主体转换为Base64 RFC 4648标准。jist是您需要用
+
替换-
,用/
替换-
我接受了您最初的输入并进行了替换:
并使用base64decode.org对其进行解码,结果很好。我在解码来自
Gmail API的消息对象响应中的“数据”字段时遇到了同样的问题。googleruby-API
库也没有正确解码文本。我发现我需要进行url safe base64解码
:
@data = Base64.urlsafe_decode64(JSON.parse(@result.data.to_json)["payload"]["body"]["data"])
希望有帮助如果您只需要解码以显示目的,请考虑使用ATOB对JavaScript前端中的消息进行解码(参见)。p> python 2.x和3.x有一个例子:
decodedContents = base64.urlsafe_b64decode(payload["body"]["data"].encode('ASCII'))
我发现,在玩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,法林顿大道55号南点罗尔斯顿Fap,罗尔斯顿,2018年5月30日20:59:21Hmmm!尝试使用如下服务对其进行解码:返回奇怪的结果。在objective-c中使用NSData::initWithBase64EncodedString对其进行解码时,返回nil(错误)。你知道有什么不同吗?可能base64编码中有一些错误,一些解码器更宽容,而另一些则不然。你确定你正确地复制了整个base64编码字符串,并且没有遗漏字符串开头或结尾的任何字符吗?Andy,我不确定你做错了什么。我使用base64decode.org(默认的UTF-8解码)得到了非常正常的结果。当你得到结果时,向下滚动一点,你会看到一堆字符在最后乱成一团。我不确定。我直接从gmail的API(JSON响应)获取编码字符串,并使用NSData initWithBase64EncodedString:options:
方法。它没有提到关于URL安全字母表的任何内容?如果您的特定库不支持“URL安全”字母表,那么您可以首先对字符串进行字符串替换(“-”加“+”和“”加“/”),然后对其执行正常的base64解码。希望对您有所帮助。如果您正在使用python,这也适用-谢谢您的保存!