如何在没有用户交互的情况下使用 GMail API 创建草稿

Posted

技术标签:

【中文标题】如何在没有用户交互的情况下使用 GMail API 创建草稿【英文标题】:How to use GMail API to create drafts without user interaction 【发布时间】:2021-07-09 18:21:56 【问题描述】:

我有一个 C# 程序在无人值守的无头服务器上运行。

我需要该程序能够在我的 GMail 帐户中发送电子邮件和创建草稿电子邮件。

所以我需要一个永久密钥或授权令牌,以便程序用来访问我的 GMail 帐户。

我不断在大量 GMail API 文档中看到提示,这是可能的,但我找不到任何有关如何创建此类密钥或令牌的实际说明。

【问题讨论】:

【参考方案1】:

好吧,我最终在https://developers.google.com/identity/protocols/oauth2/service-account找到了说明

您创建一个服务帐户,为它授予适当范围的域范围权限(请参阅https://developers.google.com/gmail/api/auth/scopes),然后在 json 文件中下载一个私钥(我叫我的server_credentials.json)。

然后,在您的程序中,您执行以下操作:

GmailService getService() 

    GoogleCredential credential;

    try 
        using (var stream = new FileStream(@"server_credentials.json", FileMode.Open, FileAccess.Read)) 
            credential = GoogleCredential.FromStream(stream)
                .CreateScoped(GmailService.Scope.GmailCompose)
                .CreateWithUser("me@example.com");
        
        return new GmailService(new BaseClientService.Initializer()  HttpClientInitializer = credential, ApplicationName = "Jumbo Accounts" );
     catch(Exception ex) 
        throw new ApplicationException("Error logging into Google Mail", ex);
    


其他参考资料:

Gmail API 有一个示例 Quickstart 参考列表,可以根据您的首选编程语言指导您如何启用 API、创建凭据甚至是示例代码。例如:.NET quickstart、Create a project and enable the API 和 Create credentials

【讨论】:

请注意添加一些有关如何设置域范围委派到服务帐户的信息。

以上是关于如何在没有用户交互的情况下使用 GMail API 创建草稿的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有手动浏览器身份验证的情况下从 Meteor.js 应用程序对 GMail-api 进行 oauth (2) 身份验证?

如何在没有用户交互的情况下获取 instagram access_token(新 api)?

如何在没有用户交互的情况下禁用 wifi 辅助

Gmail NodeJs客户端中的Gmail API userId用例?

有没有办法在没有用户交互的情况下发送短信?

如何在没有用户交互的情况下启动 Open Camera 应用程序来拍照?