You need to enable JavaScript to run this app. 使用FluentEmail对接Gmail SMTP发信报5.7.0认证错误 开低安全应用仍失效
优惠活动
大模型
产品
解决方案
定价
更多

使用FluentEmail对接Gmail SMTP发信报5.7.0认证错误 开低安全应用仍失效

FluentEmail对接Gmail报5.7.0 Authentication Required 修复方案

报错本质是Gmail SMTP服务器直接拒绝了提交的认证请求。此前可开启的「允许低安全性应用访问」选项,Google已在2022年5月全面关停对应的服务通道,即便开启也不会被服务器认可,是当前报错的核心诱因。

落地修复步骤

  • 替换认证规则
    • Gmail当前不支持使用账户常规登录密码作为第三方SMTP的认证凭证
    • 需先为目标Gmail账户开启两步验证,再生成16位专属应用专用密码,替换代码中NetworkCredential构造函数里填写的普通登录密码
  • 修正代码逻辑缺陷
    • Main方法标记了async Task却调用同步的Send()方法,异步上下文会把真实SMTP错误嵌套在AggregateException内部,导致无法定位根因,需替换为异步调用await email.SendAsync()
    • 校验From()传入的发件人地址,必须与NetworkCredential中配置的认证邮箱完全一致,使用无关的发件人地址会直接触发服务器的认证拦截
  • 匹配端口加密规则
    • 587端口对应STARTTLS显式加密,不要和465端口的隐式SSL加密逻辑混用,否则会在连接握手阶段被判定为认证失败

修正后的核心代码

namespace EmailDemo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            SmtpClient smtp = new SmtpClient
            {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                UseDefaultCredentials = false,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                // 替换为生成的16位应用专用密码,而非Gmail常规登录密码
                Credentials = new NetworkCredential("你的认证Gmail账号@gmail.com", "16位应用专用密码")
            };

            Email.DefaultSender = new SmtpSender(smtp);
            var email = Email
              // 发件人地址必须与认证账号完全一致
              .From("你的认证Gmail账号@gmail.com")
              .To("收件人@gmail.com")
              .Subject("Test Email")
              .Body("email content yes we love content YARRRR");
            
            // 异步发送,避免异常嵌套
            await email.SendAsync();
        }
    }
}

补充说明:完成上述配置后如果仍报相同错误,可检查是否因连续多次认证失败被Gmail临时拦截,一般等待15-30分钟即可恢复,不存在Google侧的全局服务故障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 19:45:03