You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#应用通过Gmail发送邮件新账号配置失败问题咨询

故障原因及解决方案

可能的故障原因

  • 新注册的Gmail账号默认触发了Google的可疑登录拦截规则,就算你开启了低安全性应用访问,Google也会先屏蔽非信任设备/IP的登录请求
  • 2022年之后Google已经逐步关闭了普通Gmail账号的「允许低安全性应用访问」功能入口,新注册账号即使你看到开关显示开启,实际规则已经不生效
  • 新账号没有完成额外的身份验证步骤,首次在新设备/IP发信前需要手动确认登录尝试
  • 如果是Google Workspace企业账号,管理员可能额外限制了SMTP发信权限

具体解决步骤

  1. 优先替换为应用密码登录(要求账号先开启两步验证,这是目前最稳定的方案):
    • 进入Google账号的「安全」设置,开启「两步验证」
    • 两步验证开启后,在安全页面找到「应用密码」入口,生成一个专用的16位应用密码
    • 把代码里NetworkCredential传入的普通登录密码替换为这个16位应用密码
  2. 如果暂时无法开启两步验证,先做异常登录确认:
    • 用浏览器登录这个新的Gmail账号,查看「可疑登录尝试」的提醒邮件,确认对应请求是你本人操作,把请求IP加入信任列表
    • 完成Google账号的解锁人机验证,10分钟内再测试发信
  3. 如果你使用的是Google Workspace企业账号,联系管理员确认:
    • 该账号的SMTP发信权限已经开启
    • 管理员没有限制第三方应用的访问权限

代码优化建议

你当前使用的SmtpClient类微软已经标记为过时,后续.NET版本会逐步废弃,建议替换为MailKit等更现代的邮件库,兼容性和错误提示会更清晰。
现有代码仅需修改凭据部分即可测试,修改后的核心代码示例:

public static void SendEmail(string strEmail,string strRandomPassword)
{
    try
    {
        MailMessage message = new MailMessage();
        SmtpClient smtp = new SmtpClient();
        message.From = new MailAddress("你的公司Gmail地址");
        message.To.Add(new MailAddress(strEmail));
        message.Subject = "Password Reset";
        message.IsBodyHtml = true;
        message.Body = "Here is your key to reset your password. Key: " + strRandomPassword;
        smtp.Port = 587;
        smtp.Host = "smtp.gmail.com";
        smtp.EnableSsl = true;
        smtp.UseDefaultCredentials = false;
        // 替换为生成的16位应用密码
        smtp.Credentials = new NetworkCredential("你的公司Gmail地址", "生成的16位应用密码");
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.Send(message);
    }
    catch (Exception ex) 
    {
        MessageBox.Show(message + ex.Message, "Program Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

内容的提问来源于stack exchange,提问作者tech127956

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:24:05