GMail API / OAUTH2 - 如何使用已弃用的传统 C# SMTP 方法发送电子邮件?

GMail API / OAUTH2 - How To Send Emails With Traditional C# SMTP Method Being Deprecated?

根据 Google 的 Less Secure App Deprecation Notice 的通知,2022 年 5 月 30 日将弃用通过 'less secure apps' 访问 Google 帐户的功能。下面的 C# 代码是我如何从我自己的个人 GMail 帐户发送电子邮件的。我只从我的应用程序发送电子邮件。我不会从这个帐户做任何其他事情(阅读电子邮件、创建草稿等),只会发送。基本上,它相当于发送“无回复”电子邮件。

// C# code
using (SmtpClient smtpClient = new SmtpClient(SmtpDomain, SmtpPortNumber))
{
    smtpClient.DeliveryMethod = SmtpDeliveryMethod;
    smtpClient.UseDefaultCredentials = UseDefaultCredentials;
    smtpClient.EnableSsl = true;
    smtpClient.Credentials = new NetworkCredential(SmtpUsername, SmtpPassword);

    MailMessage mailMessage = new MailMessage { /* ... */ };
    
    smtpClient.Send(mailMessage);
}

我已经开始查看 Google 的 API 和 OAuth 文档,但我觉得我正在进入一个黑暗的兔子洞,因为我不想访问其他用户的数据,只从我自己的帐户发送电子邮件。我从研究中假设 OAuth2 是在所有可能的情况下做事的首选方式,但我找不到“如果你现在这样做”、“然后开始这样做”的明确示例。有人可以指出我需要采取的路径的绝对起点来更新我的代码,以便我可以继续从我自己的个人 account/app 发送电子邮件吗?

转到您的 google 帐户并创建一个 apps password 创建后只需使用它而不是您的 gmail 帐户的实际密码。

Security

// C# code
using (SmtpClient smtpClient = new SmtpClient(SmtpDomain, SmtpPortNumber))
{
    smtpClient.DeliveryMethod = SmtpDeliveryMethod;
    smtpClient.UseDefaultCredentials = UseDefaultCredentials;
    smtpClient.EnableSsl = true;
    smtpClient.Credentials = new NetworkCredential(SmtpUsername, appsPasswrod);

    MailMessage mailMessage = new MailMessage { /* ... */ };
    
    smtpClient.Send(mailMessage);
}