使用G Suite账号通过SMTP发送邮件失败的技术咨询
解决G Suite账号SMTP发送失败的问题
我之前帮别人排查过不少类似的G Suite SMTP发送问题,先看你代码里的一个致命错误——这大概率是导致G Suite账号发送失败的核心原因:
在设置smtp.Credentials = networkCred;之前,你写了smtp.UseDefaultCredentials = true;。当这个属性设为true时,.NET会自动使用当前运行程序的系统默认凭据(比如Windows账户或服务器凭据),直接覆盖你手动指定的应用密码凭据。普通Gmail账号可能因为验证规则相对宽松侥幸生效,但G Suite的验证更严格,直接就被拦截了。
第一步:修复代码中的凭据配置
把代码里的凭据设置顺序调整过来,并且将UseDefaultCredentials明确设为false:
using (var mm = new MailMessage(PrivateSettings.SenderEmail, message.Destination)) { mm.Subject = message.Subject; mm.Body = message.Body; mm.IsBodyHtml = true; var smtp = new SmtpClient { Host = "smtp.gmail.com", EnableSsl = true }; var networkCred = new NetworkCredential(PrivateSettings.SenderEmail, PrivateSettings.EmailPassword); smtp.UseDefaultCredentials = false; // 必须先设为false,再指定自定义凭据 smtp.Credentials = networkCred; smtp.Port = 587; smtp.Send(mm); }
第二步:检查G Suite的必要后台配置
除了代码问题,G Suite账号还需要确认以下几项配置:
- 启用SMTP服务:登录G Suite管理控制台(admin.google.com),依次进入
应用 > Google Workspace > Gmail > 终端用户访问,确保“SMTP服务”选项是启用状态。 - 验证应用密码有效性:确认你创建的应用密码是对应
Mail应用类型的,并且输入时没有多余空格或错误字符(应用密码是16位无空格的字符串)。 - 检查域名MX记录:在Namecheap的域名管理后台,确认MX记录正确指向G Suite的服务器(正确的优先级从高到低为:
ASPMX.L.GOOGLE.COM、ALT1.ASPMX.L.GOOGLE.COM、ALT2.ASPMX.L.GOOGLE.COM等),MX记录错误会直接影响邮件收发。 - 确认两步验证状态:确保该G Suite账号确实开启了两步验证,应用密码仅对开启两步验证的账号生效。
额外排查小技巧
如果修复后还是失败,可以尝试:
- 暂时关闭程序的代理或VPN,确保SMTP连接能正常访问
smtp.gmail.com的587端口。 - 捕获
SmtpException并查看具体错误信息,比如是认证失败、连接超时还是其他原因,这能帮你更精准定位问题。
内容的提问来源于stack exchange,提问作者natnael zeleke
相关产品推荐
相关产品推荐

