RTF*_*RTF 6 gmail gmail-api google-cloud-pubsub
我订阅了 Google Cloud Pub/Sub,创建了一个主题并创建了一个带有指向我服务器上 URL 的 webhook 的订阅。然后,我使用 Gmail API 在我在 Gmail 帐户中创建的特定标签上调用 watch,并将其与我创建的主题相关联。
当我的邮件到达我的 Gmail 帐户中的标签时,Webhook 会触发对我服务器上的 URL 的 POST 请求。但是不管邮件的内容是什么,POST 正文总是这样的:
{
"message": {
"attributes": {},
"data": "eyJlbWFpbEFkZHJlc3MiOiJteWVtYWlsQG15ZG9tYWluLmNvbSIsImhpc3RvcnlJZCI6MTIzNDU2N30K",
"messageId": "12345678900000", # only relevant to Pub/Sub
"message_id": "12345678900000",
"publishTime": "2017-04-16T15:42:08.968Z",
"publish_time": "2017-04-16T15:42:08.968Z"
},
"subscription": "projects/proj-name/subscriptions/sub-name"
}
Run Code Online (Sandbox Code Playgroud)
该data字段是 Base64 编码的,在这种情况下是:
{"emailAddress":"myemail@mydomain.com","historyId":1234567}
Run Code Online (Sandbox Code Playgroud)
这就是我每次得到的结果,无论电子邮件内容是什么。但是,如果从 google 开发者控制台运行发布测试,则data字段中的 base64 编码值是我指定的实际消息字符串。
我尝试使用来自 base64 解码data值的 historyId 使用 Gmail API 对 history.list 进行后续调用,但我得到的只是这样的响应:
{"historyId": "1234567"}
Run Code Online (Sandbox Code Playgroud)
我应该如何获取电子邮件内容?
有点晚,但其他人可能会感兴趣。答案在这里。基本上你可以从 watch 调用中获得一个 historyId。存储它。然后,当您收到来自 Gmail 的通知时:
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
1258 次 |
| 最近记录: |