.NET ASP.NET Web Forms邮件发送失败,出现超时问题求助
ASP.NET Web Forms发送Gmail邮件超时问题排查与解决
先修复代码中的异常处理错误
你的catch块注释了Exception ex,导致抛出异常时ex未定义,这会引发新的错误,先修正:
catch (Exception ex) { throw new Exception(ex.Message, ex.InnerException); }
修正后才能获取真实错误信息,进一步定位问题。
核心排查与解决步骤
1. 适配Gmail的安全政策变更
Gmail已停止支持「低安全性应用访问」,如果你的账号开启了两步验证(2FA),必须使用应用专用密码替代原密码:
- 登录Google账号,进入「安全」设置页面
- 确认已启用两步验证
- 在「应用专用密码」选项中生成新密码,替换代码中的
"password"
2. 解除Google账号的登录限制
如果账号有异常登录记录,Google会阻止SMTP访问:
- 登录Gmail账号,查看收件箱或安全中心的提醒,若有「可疑登录」提示,点击「这是我本人操作」解除限制
3. 添加SMTP超时配置
代码未设置超时时间,默认值可能不匹配当前网络环境,添加超时参数:
client.Timeout = 15000; // 设置为15秒,可根据网络情况调整
4. 检查服务器网络环境
- 验证服务器网络是否允许访问587端口,可通过命令测试:
telnet smtp.gmail.com 587 - 若服务器使用代理,需为SmtpClient配置代理:
WebProxy proxy = new WebProxy("代理地址", 代理端口); client.Proxy = proxy;
5. Google Workspace账号特殊配置(若适用)
如果使用Google Workspace账号,需确认管理控制台已启用SMTP服务,且账号具备发送邮件的权限。
内容的提问来源于stack exchange,提问作者Rishf P
相关产品推荐
相关产品推荐

