Google-api-go-client:列出带标签和提取标题字段的邮件

时间:2017-03-27 22:26:42

标签: go google-api gmail-api

我想列出具有特定标签的邮件。所以我使用Go Quickstart code from google并将范围设置为gmail.MailGoogleComScope。

使用此代码

获取标签为“INBOX”的所有邮件列表
    mes, err := srv.Users.Messages.List(user).LabelIds("INBOX").Do()

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

  

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

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

1 个答案:

答案 0 :(得分:2)

" 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:list https://developers.google.com/gmail/api/v1/reference/users/messages/list

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