ASP.NET Core使用SMTP发送Gmail失败,求助谷歌安全设置
Gmail SMTP发送邮件失败的解决方案
核心问题:Gmail的安全限制
你的代码逻辑本身无明显错误,无法发送邮件的核心原因是Gmail对SMTP登录的安全限制,以下是具体解决步骤:
1. 启用两步验证并生成应用专用密码(推荐方案)
Gmail目前已默认禁止使用普通账号密码通过SMTP登录,必须通过应用专用密码替代:
- 登录谷歌账号,进入「安全」设置页面
- 找到并启用「两步验证」(需绑定手机号完成验证)
- 启用后,在两步验证下方找到「应用专用密码」选项
- 选择应用为「邮件」,设备名称可自定义(比如「ASP.NET项目」)
- 生成后复制16位的应用专用密码,替换环境变量中的
EMAIL_PASSWORD
2. 临时方案:允许安全性较低的应用访问(不推荐)
如果无法启用两步验证,可临时开启此选项(存在账号被盗风险):
- 进入谷歌账号「安全」设置页面
- 找到「安全性较低的应用访问权限」,切换为「允许访问」
3. 解除异常登录限制
如果谷歌检测到SMTP登录为异常操作,会自动拦截:
- 登录Gmail邮箱,查看是否有「异常登录提醒」邮件
- 按照邮件提示,确认该登录操作是本人发起的,解除限制
代码小优化建议
- 你的邮件内容中使用了
**{code}**,但设置了mail.IsBodyHtml = false,这些标记不会被解析为加粗样式。如果需要显示格式,可将mail.IsBodyHtml改为true,并将内容改为HTML格式:string body = @"Welcome to website!!!<br><br>Your verification code is: <strong>" + code + "</strong>.<br><br>Please enter this code to verify your account.<br><br>Thank you!"; - .NET Core中
SmtpClient已标记为过时,推荐使用MailKit库(更安全且功能丰富),安装后替换SMTP相关代码即可。
内容的提问来源于stack exchange,提问作者MONATE
相关产品推荐
相关产品推荐

