我想列出具有特定标签的邮件。所以我使用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的标签。我做错了什么?
答案 0 :(得分:2)
" INBOX"的标签名称和ID是相同的。但是,标签名称和标签ID之间存在差异。您有2种方法可以检索标签的消息列表。以下脚本假设使用谷歌的Go Quickstart。
检索标签名称和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)
}
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搜索框相同。
参考文献:
Users.messages:list https://developers.google.com/gmail/api/v1/reference/users/messages/list
Users.labels:list https://developers.google.com/gmail/api/v1/reference/users/labels/list