谷歌停用低安全应用后C#如何通过System.Net.Mail发送Gmail邮件
问题原因
2022年5月30日谷歌正式停用「低安全应用访问」权限后,直接使用谷歌账号主密码通过第三方客户端走SMTP发信的认证方式会被服务端直接拦截,The SMTP server requires a secure connection or the client was not authenticated报错就是该策略调整触发的。原有代码中的SMTP基础配置(587端口、smtp.gmail.com主机、开启SSL)本身配置正确,无需调整。
修复方案
仅需调整认证凭证即可让原有代码恢复可用,操作步骤如下:
- 为发信使用的谷歌账号开启两步验证(2FA):个人账号可直接在账号安全设置中开启;企业/教育版Workspace账号需要先由租户管理员在后台放开账号开启两步验证的权限。
- 两步验证生效后,在账号安全设置页找到「应用专用密码」入口,应用类型选择「邮件」,设备类型选择「其他」并自定义填写程序标识,生成16位长度的应用专用密码。
- 替换SMTP认证字段的密码值:将原代码中
NetworkCredential传入的账号主密码,替换为刚生成的16位应用专用密码,其余代码逻辑无需改动。
调整后的认证配置代码参考:
// 其余SMTP、邮件内容配置保持不变,仅替换密码参数即可 smtp.Credentials = new NetworkCredential("example@gmail.com", "此处填写生成的16位应用专用密码");
注意事项
- 「低安全应用访问」入口已被永久下线,不存在任何绕过限制直接使用主密码走SMTP发信的方法,所有声称可绕过该限制的公开方案均已失效。
- 应用专用密码是谷歌为未实现谷歌OAuth登录的第三方客户端单独签发的认证凭证,与主账号密码权限隔离,若后续凭证泄露可直接在账号安全页单独撤销,无需修改主账号密码。
- 开启两步验证后若找不到「应用专用密码」入口,先确认账号未被家长控制、企业安全策略限制,同时使用账号常用登录IP访问设置页,非常用登录环境下谷歌会隐藏该入口以防范账号盗用。
- 刚生成应用专用密码后如果测试发信仍返回认证错误,等待1-2分钟后重试即可,谷歌的权限配置存在短暂同步延迟。
内容的提问来源于stack exchange,提问作者Saul Muñoz Garcia
相关产品推荐
相关产品推荐

