SMTP和OAuth 2

用户名

.NET是否支持通过OAuth协议进行SMTP身份验证?基本上,我希望能够使用OAuth访问令牌以用户的名义发送电子邮件。但是,我在.NET框架中找不到对此的支持。

Google在其他环境中为此提供了一些示例,但.NET不提供。

jstedfast

System.Net.Mail不支持OAuth或OAuth2。但是,只要您具有用户的OAuth访问令牌(MailKit没有可获取OAuth令牌的代码,但是可以使用它,则可以使用MailKit的(注:仅支持OAuth2)SmtpClient发送消息。它)。

您需要做的第一件事是按照Google的说明为您的应用程序获取OAuth 2.0凭据。

完成此操作后,获取访问令牌的最简单方法是使用Google的Google.Apis.Auth库:

var certificate = new X509Certificate2 (@"C:\path\to\certificate.p12", "password", X509KeyStorageFlags.Exportable);
var credential = new ServiceAccountCredential (new ServiceAccountCredential
    .Initializer ("[email protected]") {
    // Note: other scopes can be found here: https://developers.google.com/gmail/api/auth/scopes
    Scopes = new[] { "https://mail.google.com/" },
    User = "[email protected]"
}.FromCertificate (certificate));

bool result = await credential.RequestAccessTokenAsync (CancellationToken.None);

// Note: result will be true if the access token was received successfully

现在有了访问令牌(credential.Token.AccessToken),可以将其与MailKit一起使用,就好像它是密码一样:

using (var client = new SmtpClient ()) {
    client.Connect ("smtp.gmail.com", 587, SecureSocketOptions.StartTls);

    // use the access token
    var oauth2 = new SaslMechanismOAuth2 ("[email protected]", credential.Token.AccessToken);
    client.Authenticate (oauth2);

    client.Send (message);

    client.Disconnect (true);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Exchange / O365 POP3和SMTP的2个客户端证书OAuth流程

来自分类Dev

Laravel和OAuth 2

来自分类Dev

Rails和OAuth2

来自分类Dev

ServiceStack和OAuth2

来自分类Dev

ServiceStack和OAuth2

来自分类Dev

Rails和OAuth2

来自分类Dev

OAuth2开发和生产中

来自分类Dev

Oauth2用于授权和认证?

来自分类Dev

Laravel-OAuth2和Facebook

来自分类Dev

OAuth2和Omniauth之间的区别

来自分类Dev

带轨和zapier的oauth2

来自分类Dev

依赖注入-HttpClient和OAuth2

来自分类Dev

OAuth2和Omniauth之间的区别

来自分类Dev

Laravel-OAuth2和Facebook

来自分类Dev

Spring oauth2 和集成测试

来自分类Dev

当AAD的资源API列表中未列出SMTP AUTH时如何注册MSFT Oauth2权限

来自分类Dev

Web Api 2帮助页面和OAuth端点

来自分类Dev

使用OWIN OAuth的MVC 5和WebApi2

来自分类Dev

微服务和Spring Security OAuth2

来自分类Dev

使用OAuth2和Postman进行测试

来自分类Dev

AngularJS和对Oauth2提供程序的身份验证?

来自分类Dev

关于Google云端硬盘SDK和OAuth 2的好教程?

来自分类Dev

Spring oauth2 / HttpSecurity http / ResourceServerConfigurer和WebSecurityConfigurerAdapter

来自分类Dev

Oauth2访问令牌规范和处理范围

来自分类Dev

Spring Security OAuth 2和客户端凭证流

来自分类Dev

Spring Security OAuth2和表单登录配置

来自分类Dev

Spring Boot和OAuth2,WebSecurityConfigurerAdapter与ResourceServerConfigurerAdapter

来自分类Dev

正确实施AccountManager,oauth-2和过期的令牌

来自分类Dev

API身份验证和OAuth2的使用