gmail - 解码 Gmail API 下载的附件数据

标签 gmail base64 gmail-api decoding google-api-objc-client

我可以通过传递userId、nessageID和attachmentID来获取附件(引用:

Google Developer

Cocoa Docs

我收到如下回复。

{ “数据”:“JVBERi0xLjYKJeTjz9IKMSAwIG9iagpbL1BERi9JbWFnZUIvSW1hZ2VDL0l......” “尺寸”:629163 }

我想解码数据以保存在我的应用程序本地,稍后我将显示。

我可以成功下载并保存到本地(文档文件夹),但看不到附件中的内容,请完善我。

最佳答案

我刚刚成功(几分钟前!)在 Swift 中解码检索到的附件数据(抱歉,我无法编写 Objective-C 代码),因此步骤如下:

1) 计算“data”中的字符数。 Base64 编码的字符串必须具有 4 的倍数的字符数。如果不是这种情况,则需要在字符串末尾填充尽可能多的“=”字符,以达到下一个 4 的倍数。 (我相信 Google 已发送数据而无需修补,但你永远不知道......)

2) 正如我在此 SO 链接 ( iOS - download attachment from Gmail using messageId and attachmentId ) 中发现的,Google 替换了 HTTP 传输的一些字符,因此您需要替换:

  • “-”(减号字符)乘“+”(加号字符)

  • “_”(下划线字符)乘“/”(斜杠字符)

3) 然后使用此 Swift Data init 方法将“准备好的”Base64 字符串转换为数据:Data(base64: YourBase64String, options: .ignoreUnknownCharacters)

然后您可以将转换后的数据保存到具有正确扩展名的文件中。我已成功检索 jpeg 和 pdf 格式的附件。

希望它对你有用。

关于gmail - 解码 Gmail API 下载的附件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50503037/

相关文章:

css - 如何在电子邮件中使用 Materialize.css?

java - 无法通过 gmail smtp 发送消息

ruby-on-rails - 通过 Gmail API 回复发送的电子邮件

javascript - Nativescript:用黑色空间代替照片缩略图

asp.net - 使用 SSL 证书时是否需要对 ASP.NET View 状态隐藏字段进行加密/编码?

Python套接字突然超时?

google-app-engine - 在 golang ( appengine ) 上无填充的 Base64 编码/解码

c# - 使用 .NET api for Gmail 阅读大尺寸电子邮件

Android - 如何将 Gmail HTML 邮件解析为纯文本?

r - GmailR - 附件不允许显示正文