使用 Google GmailAPI 发送邮件不起作用
Posted
技术标签:
【中文标题】使用 Google GmailAPI 发送邮件不起作用【英文标题】:using Google GmailAPI send mail not working 【发布时间】:2021-11-24 13:09:16 【问题描述】:我需要帮助。程序 WebApplication 代码 C# Asp.Net
首先,我实现了一种将 URI 放入 Google OAuth 2 授权的方法。 下载Json文件供程序读取文件并生成token。
错误
无法启动浏览器并显示“https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&response_type=code&client_id=879100301665-3hpkd1h812d5eejji8o4mku3c2ci3rcs.apps.googleusercontent.com&redirect_uri=http%3A%2F%2F127 .0.0.1%3A63526%2Fauthorize%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.send”进行授权。有关详细信息,请参阅内部异常。
其次,我曾经通过在 Google OAuth 2 授权中分配 Client ID 和 Client secret 来将值放入 Programs 中。
错误 拒绝访问路径“C:\Windows\system32\config\systemprofile”
【问题讨论】:
请编辑您的问题并包含您的代码而不是您的代码图像。 【参考方案1】:你正在做的事情有很多问题。
首先,您已经在 Google 云控制台上创建了看似 Web 应用程序凭据的内容。但是,您使用的代码 GoogleWebAuthorizationBroker.AuthorizeAsync 仅适用于已安装的应用程序。这就是您收到错误的原因。
创建一个asp .net core web app的代码如下
public void ConfigureServices(IServiceCollection services)
...
// This configures Google.Apis.Auth.AspNetCore3 for use in this app.
services
.AddAuthentication(o =>
// This forces challenge results to be handled by Google OpenID Handler, so there's no
// need to add an AccountController that emits challenges for Login.
o.DefaultChallengeScheme = GoogleOpenIdConnectDefaults.AuthenticationScheme;
// This forces forbid results to be handled by Google OpenID Handler, which checks if
// extra scopes are required and does automatic incremental auth.
o.DefaultForbidScheme = GoogleOpenIdConnectDefaults.AuthenticationScheme;
// Default scheme that will handle everything else.
// Once a user is authenticated, the OAuth2 token info is stored in cookies.
o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
)
.AddCookie()
.AddGoogleOpenIdConnect(options =>
options.ClientId = YOUR_CLIENT_ID;
options.ClientSecret = YOUR_CLIENT_SECRET;
);
您遇到的第二个问题是您添加的重定向 uri 不是有效的 URL,它需要是 https:// 至少您缺少 //。以及客户端库将使用 /signin-google 发送请求的事实
所以正确的重定向 uri 应该更像这样。
https://localhost:5001/signin-google
我有一个 YouTube 视频,其中显示 How to get a Google users profile information, with C#. 和一个配套的博客帖子 Asp .net core 3 and Google login 两者都应该适用于 .net 5。
【讨论】:
以上是关于使用 Google GmailAPI 发送邮件不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中使用带有服务帐户的 gmail api 或 google Oauth 来发送邮件?