Google-api-go-client:列出带有标签的消息并获取 header 字段

标签 go google-api gmail-api google-api-go-client

我想列出带有特定标签的消息。所以我用了 Go Quickstart code from google并将范围设置为 gmail.MailGoogleComScope。

获取带有标签“INBOX”的所有消息的列表使用此代码工作正常

    mes, err := srv.Users.Messages.List(user).LabelIds("INBOX").Do()

但是当我将“INBOX”替换为“TEST”时出现错误:

nable to retrieve Messages. googleapi: Error 400: Invalid label: TEST, invalidArgument exit status 1

还有一个名为 TEST 的标签。我做错了什么?

最佳答案

“INBOX”的标签名称和ID相同。但是,有时标签名称和标签 ID 会有所不同。您有 2 种方法来检索标签的消息列表。以下脚本假设使用 Go Quickstart来自谷歌。

1。检查标签 ID 并检索消息列表

检索标签名称和 ID:

mes, err := srv.Users.Labels.List(user).Do()
if err != nil {
    log.Fatalf("Error: %v", err)
}
for _, e := range mes.Labels {
    fmt.Println(e.Name + ", " + e.Id)
}

使用 labelID 检索消息列表:

mes, err := srv.Users.Messages.List(user).LabelIds(labelID).Do()
if err != nil {
    log.Fatalf("Error: %v", err)
}
for _, e := range mes.Messages {
    fmt.Println(e.Id)
}

2。使用“Q”检索消息列表

mes, err := srv.Users.Messages.List(user).Q("label:labelname").Do()
if err != nil {
    log.Fatalf("Error: %v", err)
}
for _, e := range mes.Messages {
    fmt.Println(e.Id)
}

这样可以直接检索到标签名称的消息列表。 “Q”参数同Gmail搜索框。

引用:

  1. Users.messages:列表 https://developers.google.com/gmail/api/v1/reference/users/messages/list

  2. Users.labels:列表 https://developers.google.com/gmail/api/v1/reference/users/labels/list

关于Google-api-go-client:列出带有标签的消息并获取 header 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057478/

相关文章:

javascript - Google API 请求收到不良结果

google-api - 有 Google Keep API 吗?

c# - Gmail API 读取邮件

mongodb - Aerospike Golang 客户端 putObject 方法让我 panic : reflect: call of reflect. Value.Elem on map Value

java - Google 通讯录 API v3,JAVA 获取所有联系人 "contactFeed.getEntries() is empty"!

file - 如何使用go传输多个文件

javascript - 谷歌 Gmail/电子邮件地址的数据调节

node.js - Google OAuth 使用刷新 token 获取新的访问 token

mongodb - golang mongodb migrate database 库 mongo 到 mgo

linux - Go HTTP 服务器测试 ab vs wrk 结果差异如此之大