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

oss*_*wmi 2 c# gmail smtp smtpclient oauth-2.0

根据 Google 的“不太安全的应用程序弃用通知”的通知,自 2022 年 5 月 30 日起,通过“不太安全的应用程序”访问 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);
}
Run Code Online (Sandbox Code Playgroud)

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

DaI*_*mTo 5

转到您的 Google 帐户并创建应用程序密码,创建后只需使用该密码而不是您的 Gmail 帐户的实际密码。

安全

在此输入图像描述

// 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);
}
Run Code Online (Sandbox Code Playgroud)