【问题标题】:Get Unique ID of one attachment with GMAIL API使用 GMAIL API 获取一个附件的唯一 ID
【发布时间】:2014-08-27 17:15:05
【问题描述】:

我正在使用新的 GMail API。我的目标是获取每封电子邮件的所有附件的列表。它已经完成并且正在运行。

现在,当用户单击每个附件时,我希望在新窗口中打开每个附件的直接链接。我怎样才能得到那个“ID”?

这就是我的工作:

Message message = service.users().messages().get(userId, messageId).execute();
        List<MessagePart> parts = message.getPayload().getParts();
        for (MessagePart part : parts) {
          if (part.getFilename() != null && part.getFilename().length() > 0) {
            String filename = part.getFilename();
            String attId = part.getBody().getAttachmentId(); // It isn't ID that Im looking for.

我使用 JAVA。

谢谢, 迭戈。

【问题讨论】:

    标签: gmail-api


    【解决方案1】:

    实际上似乎有一种方法可以让用户直接从 gmail 的服务器下载附件,而无需通过我们的服务器。在这里找到它:

    https://github.com/KartikTalwar/gmail.js/issues/134#issuecomment-69447858

    https://mail.google.com/mail/u/0/?ui=2&view=att&th={message_id}&attid=0.{atachment_index}&disp=safe&zw
    

    attachmment_index 只是附件的索引。如果有 3 个附件并且您想要获取第 3 个文件,则索引值为 3。此 URL 是一个 302 标头,其作用类似于下载文件的链接缩短器。打开此链接将带您进入附件数据

    提到了一个 ik 值,我不知道它的用途,但即使没有它,它似乎也能工作。

    @aloo

    【讨论】:

      【解决方案2】:

      如果我是你,我不会尝试依赖附件 ID,而是在你的服务器上下载附件的原始内容并将其显示给用户。

      应该不会太复杂,只需要解析the data field的内容即可。您可以使用 Java 的 Mime 库来执行此操作。然后将内容复制到 Servlet 的OutputStream

      【讨论】:

      • 您的想法很棒,但不是我想要的。我不想显示附件,我想编辑它。我会努力解决这个问题。
      • 一个想法是将其上传到 GDrive 并允许用户在 Google Drive 中打开它。这样,用户就可以选择自己喜欢的应用来编辑文档。
      • 嗯,这个想法就是我们正在使用的。我们在 GDrive 上有所有这些附件,我们可以在 GDrive 编辑器上打开它们。我使用“javamail”来获取 EMAIL_ID 和 ATTACHMENT_ID 来存储我的附件,但是使用这个 API,我没有相同的值......
      • 如果您希望客户端用户直接下载文件而不通过您的服务器,是否有可直接访问的公共 URL?
      • 一种解决方案是使用 JavaScript 让用户的浏览器下载附件并将其传输到驱动器。这样它就永远不会通过您的服务器。但它要求用户在该阶段访问您的网页。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多