我有基本的传统asp.net web应用程序(没有mvc,没有。net core)
截至2022年5月30日,谷歌已停止支持不安全的应用程序。现在如果我想用mywebapp@gmail.com发送邮件因为来自地址,它不能工作!SmtpException: SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.7.0 Authentication Required。了解更多…
我已经尝试设置apppassword并使用NetworkCredentials发送邮件,它工作但之后我得到一个Application_OnError事件引发,并再次抛出上述SmtpException。
一些谷歌说要解决这个问题,我需要实现OAuth2.0,但这涉及到使用用户的gmail帐户或与此gmail帐户相关的一些权限。
在我的场景中是不相关的。我只想从mywebapp发送电子邮件给我的客户Gmail帐户,而不是用户的帐户。
那么为什么我的客户(当使用mywebapp时))同意接收来自mywebapp的电邮gmail账户?因为他们没有登录凭证。
OAuth2.0在我的场景中是如何相关的?
感觉困惑。附加问题:如果你认为apppassword是要走的路,那么为什么我收到smtpexception后电子邮件成功发送?如果需要,可以共享代码
我的smtpClient代码
Public Function SendViaGmail(subject As String, body As String, recipients As String)
Dim fromEmail As String = ConfigurationSettings.AppSettings("ContactEmail")
Dim smtpClient As Mail.SmtpClient = New Mail.SmtpClient("smtp.gmail.com") With {
.Port = 587,
.DeliveryMethod = SmtpDeliveryMethod.Network,
.Credentials = New NetworkCredential(fromEmail, "APP_PWD"),
.EnableSsl = True
}
Dim mailMessage As MailMessage = New MailMessage With {
.From = New Mail.MailAddress(fromEmail),
.Subject = subject,
.Body = body,
.IsBodyHtml = True
}
mailMessage.[To].Add(recipients)
If smtpClient IsNot Nothing Then
smtpClient.Send(mailMessage)
End If
End Function
我的完整帖子在这里提到
为什么我需要OAuth通过gmail发送电子邮件给我的客户端?
回答:你不需要,这取决于用例。
有两种方式通过smtp服务器发送电子邮件,现在谷歌已经删除了不太安全的应用程序。
- 您可以在google帐户上启用2fa并创建应用程序密码然后你可以使用之前使用的完全相同的代码,只需将标准用户gmail密码替换为应用程序密码。 第二个选项是使用xoauth2。
OAuth2.0在我的场景中如何相关?
XOauth2是Oauth2的一种形式,它允许应用程序请求用户同意访问他们的私人数据,在这种情况下是他们的gmail邮件帐户。如果你只连接到你自己的Gmail帐户,那么使用XOauth到imo对你的用户来说将是过度杀戮,那么你真的没有理由使用Xoauth2和授权用户。
侧面问题:如果你认为apppassword是要走的路,那么为什么我收到smtpexception后,电子邮件成功发送?如果需要,可以共享代码
一个smtpexception对我来说意味着你的代码中有一个错误。
注意:工作示例可以在作者的其他问题中找到SmtpClient在设置应用程序密码和启用2因素身份验证后不工作