如何使用带有服务帐号的Gmail API或C#中的Google OAuth来发送邮件?帐号、如何使用、发送邮件、OAuth

由网友(美梦被尿惊醒)分享简介:我可以为ASP.NET核心Web应用程序中的"忘记密码"功能发送无回复邮件吗?我无法在我的Web应用程序中使用SMTP。是否可以使用Gmail API发送忘记密码邮件的无回复邮件?服务帐户或Google oauth2.0在这里能帮上什么忙吗?推荐答案只有在您拥有Google工作区域帐户的情况下,Gmail API...我可以为ASP.NET核心Web应用程序中的"忘记密码"功能发送无回复邮件吗? 我无法在我的Web应用程序中使用SMTP。是否可以使用Gmail API发送忘记密码邮件的无回复邮件? 服务帐户或Google oauth2.0在这里能帮上什么忙吗?

推荐答案

只有在您拥有Google工作区域帐户的情况下,Gmail API才能使用服务帐户。

您需要将域范围delegation设置为域上的用户,然后服务帐户将能够代表其发送电子邮件。我想在这种情况下,创建一个名为no-回复的用户将是一种选择。

Code是标准服务帐户授权码,添加了要委派给的gsuiteUser。

        string ApplicationName = "Gmail API .NET Quickstart";
        const string serviceAccount = "XXXXX@XXXX-api.iam.gserviceaccount.com";

        var certificate = new X509Certificate2(@"cXXXX-api-ed4859a67674.p12", "notasecret", X509KeyStorageFlags.Exportable);

        var gsuiteUser = "domainUser@XXXX.com";

        var serviceAccountCredentialInitializer = new ServiceAccountCredential.Initializer(serviceAccount)
        {
            User = gsuiteUser,
            Scopes = new[] { GmailService.Scope.Gmail }

        }.FromCertificate(certificate);

        var credential = new ServiceAccountCredential(serviceAccountCredentialInitializer);
        if (!credential.RequestAccessTokenAsync(CancellationToken.None).Result)
            throw new InvalidOperationException("Access token failed.");

        var service = new GmailService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,
        });
应在您的网站用户本身上创建忘记密码功能。我会假设它有自己的域和邮件服务器。您应该使用它,而不是Gmail API。

阅读全文

相关推荐

最新文章