1

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

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

这就是我所做的:

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。

谢谢你,迭戈。

4

2 回答 2

0

实际上,似乎有一种方法可以让用户直接从 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

于 2020-02-11T13:55:08.413 回答
-1

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

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

于 2014-07-07T10:38:12.533 回答