【问题标题】:Downloading attachments with the Gmail API fails使用 Gmail API 下载附件失败
【发布时间】:2016-03-28 18:06:45
【问题描述】:

使用类似于我得到的 API 参考站点的代码,并且在 for 循环开始时出现空异常错误。我检查了message 有一个附件,但它似乎是内联的。对于附件未内联的其他消息,它确实有效。

我需要做什么才能获得内联附件

public List<Attachment> getAttachments(String messageId) throws IOException
{
    List<Attachment> attachments = new ArrayList<>();
    Message message = SERVICE.users().messages().get(USER, messageId).execute();
    List<MessagePart> parts = message.getPayload().getParts();
    if (parts != null)
    {
    
        for (MessagePart part : parts)
        {
            if (part.getFilename() != null && part.getFilename().length() > 0)
            {
                String attId = part.getBody().getAttachmentId();
                MessagePartBody attachPart = SERVICE.users().messages().attachments().
                        get(USER, messageId, attId).execute();

                byte[] fileByteArray = Base64.decodeBase64(attachPart.getData());
                Attachment attachment = new Attachment(part, attachPart, fileByteArray);
                attachments.add(attachment);
            }
        }
    }
    return attachments;
}

【问题讨论】:

    标签: java gmail-api


    【解决方案1】:

    您可以通过message.getPayload().getBody() 详细说明内联附件。

    我建议你先测试一下:

    if (message.getPayload().getBody().size() > 0) {
        // do your work with:
        // message.getPayload().getBody()
    } else {
        // do your work with:
        // message.getPayload().getParts()
    }
    

    如需更多信息,请参阅官方 Gmail API 文档:

    尤其是对线:

    "body": users.messages.attachments Resource

    希望这会有所帮助。

    【讨论】:

    • 太好了。不好意思,我自己没看到。谢谢
    • 没关系:它可能会发生 - 尤其是在处理 Google API 文档时;)
    猜你喜欢
    • 2014-11-08
    • 2022-11-11
    • 1970-01-01
    • 2018-12-15
    • 2016-02-22
    • 2016-11-23
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多