2

我想列出带有特定标签的消息。所以我使用了谷歌的 Go Quickstart 代码并将范围设置为 gmail.MailGoogleComScope。

使用此代码获取带有标签“收件箱”的所有消息的列表可以正常工作

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

但是当我用“TEST”替换“INBOX”时,我得到了错误:

无法检索消息。googleapi:错误 400:无效标签:TEST,invalidArgument 退出状态 1

并且有一个名为 TEST 的标签。我究竟做错了什么?

4

1 回答 1

5

“收件箱”的标签名称和 ID 相同。但是,标签名称和标签 ID 有时会有所不同。您有 2 种方法来检索标签的消息列表。以下脚本假设使用 google 的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

于 2017-03-28T00:12:34.060 回答