通过.NET Framework C#发送Gmail邮件无需开启低安全选项的方案咨询
无需开启低安全性应用访问的Gmail程序发信方案
Google已正式下线「低安全性应用访问」功能,普通个人Gmail账号已无开启入口,你可以通过以下两种方案实现程序发信需求:
方案1:使用应用专用密码(改动最小,适合个人测试/自用场景)
- 前提:你的Gmail账号已开启两步验证,仅开启两步验证的账号可生成应用专用密码
- 操作步骤:
- 登录Google账号,进入安全性设置页面
- 找到「应用专用密码」选项,生成对应该C#程序的16位专用密码
- 先修正你现有代码中的SMTP地址拼写错误:正确Gmail SMTP地址为
smtp.gmail.com,你当前代码写的smtp@gmail.com会直接触发连接失败 - 替换
NetworkCredential参数中的密码字段为刚才生成的16位专用密码即可
- 修正后核心代码示例:
private void btnSend_Click(object sender, EventArgs e) { // 修正SMTP地址 SmtpClient client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; // 密码替换为生成的16位应用专用密码 client.Credentials = new NetworkCredential("from@gmail.com", "你生成的16位应用专用密码"); MailAddress fromEmail = new MailAddress("from@gmail.com", "From C#"); MailAddress toAddress = new MailAddress("to@gmail.com", "dogy"); MailMessage message = new MailMessage() { From = fromEmail, Subject = "just test from c# program", Body = "it's coming from c# program" }; message.To.Add(toAddress); try { client.Send(message); MessageBox.Show("Email sent successfully"); } catch (Exception) { MessageBox.Show("Failed!"); } }
方案2:使用Gmail API + OAuth2认证(更安全,适合正式生产场景)
该方案走Google官方OAuth2授权机制,无需暴露账号密码,安全性更高,适合对外发布的商用程序使用:
- 操作步骤:
- 在Google Cloud控制台创建项目,启用Gmail API服务
- 配置OAuth同意屏幕,生成桌面应用类型的客户端ID、客户端密钥
- 项目中安装Google.Apis.Gmail.v1对应的NuGet包,替换原有SMTP发信逻辑,使用Gmail API构造、发送邮件
- 首次运行时完成账号授权后,可缓存刷新Token,后续无需重复授权
补充提示:微软官方已将
SmtpClient类标记为过时,.NET平台新开发的项目更推荐使用MailKit第三方库实现邮件发送功能,兼容性、安全性表现更优。
内容的提问来源于stack exchange,提问作者Talkhak1313
相关产品推荐
相关产品推荐

