gpt4 book ai didi

go - 使用Go通过GCP发布/订阅设置Gmail推送通知

转载 作者:行者123 更新时间:2023-12-01 20:26:04 27 4
gpt4 key购买 nike

我希望基本上设置我的应用程序,以便每当邮件到达Gmail收件箱时它都会接收通知。

我正在遵循here指南。

  • 我创建了一个主题和订阅。
  • 我的凭据正在运行。我可以使用凭据和Go脚本检索电子邮件,如here所示。
  • 我已将gmail的主题gmail-api-push@system.gserviceaccount.com启用为发布/订阅发布者权限。
  • 我已经通过控制台手动发送消息来测试pub/sub中的主题。该消息显示在我进行的简单订阅中。

  • main.go
    func main() {
    ctx := context.Background()
    // Sets your Google Cloud Platform project ID.
    projectID := "xxx"

    // Creates a client.
    // client, err := pubsub.NewClient(ctx, projectID)
    _, err := pubsub.NewClient(ctx, projectID)
    if err != nil {
    log.Fatalf("Failed to create client: %v", err)
    }

    b, err := ioutil.ReadFile("credentials.json")
    if err != nil {
    log.Fatalf("Unable to read client secret file: %v", err)
    }

    // If modifying these scopes, delete your previously saved token.json.
    config, err := google.ConfigFromJSON(b, gmail.GmailReadonlyScope)
    if err != nil {
    log.Fatalf("Unable to parse client secret file to config: %v", err)
    }
    gmailClient := getClient(config)

    svc, err := gmail.New(gmailClient)
    if err != nil {
    log.Fatalf("Unable to retrieve Gmail client: %v", err)
    }

    var watchRequest gmail.WatchRequest
    watchRequest.TopicName = "projects/xxx/topics/gmail"

    svc.Users.Watch("xxx@gmail.com", &watchRequest)
    ...

    该脚本运行良好,尽管没有任何标准输出,但没有确认Watch服务正在运行。

    但是,使用上述设置,我从 xxx@gmail.com发送了一封邮件给自己,但是该邮件未显示在主题/订阅中。

    要使用Go通过发布/订阅启用Gmail推送通知,我还需要做什么?

    最佳答案

    确保在UsersWatchCall上调用Do方法。 svc.Users.Watch仅返回结构,不立即执行调用。

    它看起来像这样:

    res, err := svc.Users.Watch("xxx@gmail.com", &watchRequest).Do()
    if err != nil {
    // don't forget to check the error
    }

    关于go - 使用Go通过GCP发布/订阅设置Gmail推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62309277/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com