【问题标题】:C# Send Email via Gmail programaticallyC# 以编程方式通过 Gmail 发送电子邮件
【发布时间】:2020-07-28 08:58:25
【问题描述】:

有谁知道我如何通过我的网络服务器 (Azure Functions) 向 gmail 发送电子邮件?

这是为了让客户通过网站与我们联系,因此它需要顺畅且没有挑战。

我已按照本指南进行操作

https://developers.google.com/gmail/api/quickstart/dotnet?authuser=1

在为 Azure 创建自己的 IDataStore 实现后,我痛苦地意识到这将尝试通过 Web 浏览器进行挑战。

我们之前使用与此类似的方法使用 SMTP 进行此工作

How to send email by using MailKit?

但这需要我们设置“允许不安全的应用程序”标志,该标志会在一段时间后自动关闭并导致我们的联系我们页面停止工作。

我想这应该可以使用我创建的 API 密钥来实现,但我找不到任何关于如何仅使用 API 密钥发送电子邮件的文档。

【问题讨论】:

  • 这能回答你的问题吗? How to send email by using MailKit?
  • @Fildor,不,如果您查看我的问题 SMTP 不是一个选项,因为出于某种原因,谷歌在一段时间后不断恢复“允许不安全的应用程序”,这是该解决方案所要求的。跨度>
  • 好吧,我的想法是,如果您按照那里的说明操作,它就不会再被视为“不安全”了?
  • 我对使用 SSL 的 SMTP 的安全性没有问题,请阅读我的问题。一段时间后,谷歌自动恢复设置并且我们的“联系我们”分页符,然后我们需要重新登录并再次设置标志。我们不能一直这样做。
  • 看来我需要沿着这条路线走developers.google.com/identity/protocols/oauth2 并使用谷歌身份平台

标签: c# .net-core gmail google-api-dotnet-client


【解决方案1】:

使用 google .net 客户端库的 Gmail api 路由。

如果您使用的是 gsuite 域电子邮件地址,那么您可以使用服务帐户。如果您需要一些代码,请告诉我。

否则,您将需要在本地授权后运行您的代码以保留刷新令牌,然后设置您的 Idatastore 以使用您传递给它的刷新令牌。只要定期使用刷新令牌,它就不会过期。这并不是说它不能,但如果它失败了,它不应该只需要为它生成一个新的刷新令牌,它就会重新启动并运行。

smtp 路由

如果您想使用 smtp,您可能需要解决 Xoauth2 我不知道任何适用于 C# 的开箱即用功能,并且 Google .net 客户端库不适用于 smpt 服务器.

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 2010-11-22
    • 2017-09-18
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多