正在关注 this github article我能够使用 OAuth2 对 GMail 进行身份验证,并以编程方式使用 SMTP 和 IMAP(来自 MailKit 的客户端)发送 gmail 消息。该链接由作者 (jstedfast) 友情提供。该方法的问题在于它会打开浏览器弹出窗口并要求用户进行身份验证,至少时不时如此。也许这是因为该方法使用“用户 secret ”而不是服务帐户和私钥/公钥,但我不确定。
我需要从服务器类型的应用程序发送一封电子邮件,其中没有用户手动插入进程。到目前为止,该应用程序正在使用标准的 SMTP 身份验证,但这需要 GMail/GSuite 帐户启用“不太安全”设置,而客户不希望这样。
有一个very old post (同样由 jstedfast 提供)展示了如何使用服务帐户和公钥/私钥通过 OAuth2 对电子邮件客户端进行身份验证。我完全遵循了那篇文章(除了我使用 json 打包证书而不是 p12 并且使用 GMail 而不是 GSuite 电子邮件)但结果是否定的。即,当我尝试执行 client.Authenticate(accessToken) 时,响应是读取 {"status":"400", "schemes":"Bearer", "scope": "https://mail.google.com/”
我可以访问 GSuite,并且不介意在必要时使用它,但是我没有找到明确的说明和可行的示例。任何人都可以指出通过私钥/公钥加密使用 OAuth2 进行身份验证并且不需要用户交互的 C# 示例吗?
最佳答案
这可以通过 Web 应用类型 OAuth 客户端 ID 和手动创建的刷新 token 实现。
如何创建正确的 OAuth 客户端 ID 并获取刷新 token :https://stackoverflow.com/a/24123550/6075536
那么如何使用 MailKit 发送电子邮件:https://stackoverflow.com/a/52413127/6075536
关于c# - 如何在没有浏览器弹出窗口的情况下使用 OAuth2 发送 GMail/GSuite 电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63973845/