使用GMAIL API获取一个附件的唯一ID

时间:2014-07-07 09:10:41

标签: gmail-api

我正在使用新的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。

谢谢你, 迭。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

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

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