如何通过Gmail Pub/Sub API获取正确的Gmail邮件messageID
获取Gmail Pub/Sub推送对应的真实邮件ID方法
你现在取错字段了——推送结构外层的message.messageId是Google Pub/Sub服务自己生成的消息流水号,和Gmail体系内的邮件ID没有任何映射关系,不用尝试从这个字段解析邮件ID。
正确的获取步骤如下:
- 第一步:解析推送载荷里的核心数据
推送结构中message.data字段是Base64URL编码的JSON字符串,你需要先对这个字段做Base64解码,解码后会得到Gmail推送的实际业务内容,结构示例:
你贴的样例里{ "emailAddress": "接收推送的邮箱地址", "historyId": "触发本次推送的邮箱历史记录序列号" }data字段是截断状态,补全后解码就能拿到上述两个核心参数。 - 第二步:通过historyId拉取新增邮件列表
拿到emailAddress和historyId后,调用Gmail API的历史记录查询接口,查询从这个historyId开始的messageAdded类型变更,返回结果里的messages数组中,每一项的id字段就是你需要的真实Gmail messageId,可以直接用来调用邮件详情接口拉取完整内容。
注意点:单次历史记录查询可能返回多条在对应时间点新增的邮件,如果你需要精准匹配触发本次推送的单封邮件,可以结合邮件的接收时间、标签做二次过滤,避免拿到之前未处理的历史邮件ID。
内容的提问来源于stack exchange,提问作者A. Boas
相关产品推荐
相关产品推荐

