【问题标题】:Fetching new Gmail emails after a timestamp在时间戳后获取新的 Gmail 电子邮件
【发布时间】:2021-06-24 05:32:29
【问题描述】:

我正在浏览 Gmail API 文档(https://developers.google.com/gmail/api),我能够阅读收件箱中存在的所有用户电子邮件。

例如 sn-p(阅读完整的电子邮件列表):

for {
        req := svc.Users.Messages.List("me")
        r, _ := req.Do()
        for _, m := range r.Messages {
            msg, _ := svc.Users.Messages.Get("me", m.Id).Do()
            date := ""
            for _, h := range msg.Payload.Headers {
                if h.Name == "Date" {
                    date = h.Value
                    break
                }
            }
            msgs = append(msgs, message{
                ...
            })
        }
    }

现在,当收到新电子邮件时,我也想阅读它们(立即或一段时间后)。我可以为此目的编写计划作业,但我不确定是否可以在特定时间戳或电子邮件标识符之后获取电子邮件。我不想一遍又一遍地阅读一大堆电子邮件来找出新的电子邮件,这样会涉及很多不必要的计算。有什么方法可以让这项任务变得更容易吗?

【问题讨论】:

    标签: go gmail gmail-api


    【解决方案1】:

    Looking at the docs,貌似支持查询参数q

    查询参数支持与 Gmail 搜索栏中相同的选项:

    只返回匹配指定查询的消息。支持与 Gmail 搜索框相同的查询格式。例如,“来自:someuser@example.com rfc822msgid:somemsgid@example.com is:unread”。使用 gmail.metadata 范围访问 api 时不能使用参数。

    这意味着您可以执行"after:YYYY/MM/DD" 之类的操作或使用时间戳"after:1616819452"

    req := svc.Users.Messages.List("me").Q("after:2021/01/01")
    

    在此处查看完整用法https://pkg.go.dev/google.golang.org/api/gmail/v1#UsersMessagesListCall.Q

    【讨论】:

    • 谢谢,那个我已经看过了,但是查询是日期的,我想在时间戳之后查询
    • @AmitUpadhyay 它还支持时间戳。查看更新的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2019-04-18
    • 2021-03-04
    • 2014-08-19
    • 1970-01-01
    相关资源
    最近更新 更多