.NET Core使用Gmail SMTP发送邮件超时问题求助
解决.NET Core中Gmail SMTP发送邮件超时问题
核心问题排查与修复步骤:
- SMTP服务器地址错误:你配置的
smtp.google.com是错误地址,正确地址应为smtp.gmail.com。 - 未禁用默认凭据:必须开启
smtpClient.UseDefaultCredentials = false,否则系统会自动覆盖你设置的账号密码,导致认证失败进而引发超时。 - 端口与SSL匹配:587端口依赖STARTTLS协议(需保持
EnableSsl=true),465端口是SSL直连模式,两种端口都可使用,但前提是服务器地址正确。
修改后的Sender类关键代码:
using(SmtpClient smtpClient = new SmtpClient(_setting.SmtpServer, _setting.SmtpPort)){ smtpClient.EnableSsl = true; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; // 必须启用该行配置 smtpClient.Credentials = new NetworkCredential(_setting.SenderAddress, _setting.Password); smtpClient.Timeout = 20000; smtpClient.Send(mail); }
修改后的测试代码:
[Test] public void SendEmailGmail() { Setting setting = new Setting(); setting.SmtpServer = "smtp.gmail.com"; // 修正服务器地址 setting.SmtpPort = 587; setting.SenderAddress = "my@googlemail.com"; setting.Username = "Display Name"; setting.Password = "GoogleGeneratedAppPassword"; Sender sender = new Sender(setting); sender.Send("i@dont.tell", "Hello, World!"); }
额外验证项:
- 确认你的Google账号已开启两步验证,应用密码是在开启2FA后生成的,且生成时选择的是「邮件」类应用。
- 检查网络环境是否能正常访问
smtp.gmail.com的对应端口,部分网络会屏蔽SMTP端口,可尝试更换网络测试。
内容的提问来源于stack exchange,提问作者peni4142
相关产品推荐
相关产品推荐

