我假设给定邮件的每个附件都有一个唯一的附件ID,我可以在需要时使用它来引用该附件。似乎这个假设是不正确的。
每次调用 Google 的 GMail API (https://developers.google.com/gmail/api/v1/reference/users/messages/get) 的 Users.messages.get 服务来检索带有附件的邮件时,即使使用了相同的 messageId,返回的附件 ID 也会有所不同。如何找到"真实"附件 ID?
对于可能有这个问题的其他人,我们能够联系到Google中提供以下信息的人:
- 附件 ID 不会过期。令牌只是从附件的存储远程部件引用生成的。
- 如果使用 attachmentId,为避免两次导入同一附件以获取附件的稳定标识符,可以尝试使用附件的文件名 + sha1 哈希的组合。 如果您通过存根调用Gmail APi,您应该能够读取附件的sha1哈希。
希望其他人也会发现这很有用。
我自己不得不将附件ID存储在数据库中,我什至不确定下面的两个选项是否确实是持久的。然而,我在工作时几周的测试似乎表明了这一点,但我不能保证。
-
对附件使用基于线程 ID、消息 ID 和部分 ID 的键。
-
查看 MessagePartHeader 以获取"X-Attachment-Id"值。这些 id 是我目前用于存储附件 ID 的。