直到 5 月 30 日,我使用 Gmail 从我的网站发送确认电子邮件。
看起来像这样
public static async Task<bool> SendEmail(string email, string subject, string body)
{
var fromAddress = new MailAddress("securemail@gmail.com", "Регистрация");
var toAddress = new MailAddress(email);
const string fromPassword = "securepass";
var smtp = new System.Net.Mail.SmtpClient
{
UseDefaultCredentials = false,
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body,
})
{
await smtp.SendMailAsync(message);
}
return true;
}
如您所见,使用邮件密码对登录。但自 5 月 30 日起,谷歌禁用了这种“不安全的方式”,现在你需要以某种方式安全登录。
Google 本身通过 Oauth2 和同意屏幕说明您需要什么,但这些是为最终用户提供的服务,当您指定您的 Google 邮件并且 Google 允许您访问时。
但我不需要那样,我只需要从我的邮件中发送一封信到我的 .NETCore 应用程序中的其他邮件,最终用户无权访问该邮件。怎么做?
正如@EvgeniyZ 所写,这是应用程序密码。
操作顺序(从此处部分清楚地了解使用 Gmail 发送邮件时访问不受信任的应用程序)
1)我们打开我们要发送邮件的帐户,两步验证 - 例如发送短信。
https://support.google.com/accounts/answer/185839
2) 我们在账户https://security.google.com/settings/security/apppasswords中生成应用程序密码
它看起来像这样“srnyyvqajocnsvdp”
3) 最重要的是,以上指南中没有的内容 - 我们使用此密码访问邮件的方式与之前使用普通密码的方式相同!
最终代码如下所示