use*_*589 2 google-api go gmail-api google-api-go-client
我想列出带有特定标签的消息。所以我使用了谷歌的Go Quickstart 代码并将范围设置为 gmail.MailGoogleComScope。
使用此代码获取带有标签“INBOX”的所有邮件列表可以正常工作
mes, err := srv.Users.Messages.List(user).LabelIds("INBOX").Do()
Run Code Online (Sandbox Code Playgroud)
但是当我用“测试”替换“收件箱”时,出现错误:
无法检索消息。googleapi:错误 400:无效标签:TEST,invalidArgument 退出状态 1
并且有一个名为 TEST 的标签。我究竟做错了什么?
“INBOX”的标签名称和ID相同。但是,标签名称和标签 ID 有时会有所不同。您有 2 种方法来检索标签的消息列表。以下脚本假设使用来自 google的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)
}
Run Code Online (Sandbox Code Playgroud)
使用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)
}
Run Code Online (Sandbox Code Playgroud)
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)
}
Run Code Online (Sandbox Code Playgroud)
这样可以直接检索一个消息列表的标签名称。“Q”的参数与 Gmail 搜索框相同。
参考 :
Users.messages:列出https://developers.google.com/gmail/api/v1/reference/users/messages/list
Users.labels:列出https://developers.google.com/gmail/api/v1/reference/users/labels/list
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |