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

使用C#+MailKit通过Yahoo发送邮件遇AUTH005认证错误求助

解决Yahoo SMTP认证错误及应用密码生成问题

一、先处理临时认证限制(#AUTH005错误)

  • 立即停止发送尝试,等待15-30分钟,Yahoo针对多次错误认证的限制通常是临时的。
  • 登录Yahoo邮箱网页版,检查是否有安全验证提示(如短信/邮箱验证码),完成验证以解除账号的异常状态。

二、解决应用密码无法生成的问题

  • 必须先开启两步验证(2FA):应用密码仅支持已开启2FA的账号,进入Yahoo账号安全设置,找到“两步验证”选项完成开启。
  • 清理浏览器缓存或更换浏览器,重新进入账号安全中心的“应用密码”生成页面尝试。
  • 检查账号是否有未处理的安全风险提示(如异地登录警告),处理完成后再生成应用密码。

三、修正代码中的关键问题

原代码存在两个核心问题:未将邮件正文赋值给message.Body,以及异步方法混用同步调用。修正后的代码如下:

// 确保方法标记为async
public async Task SendYahooEmail(string emailBody)
{
    var message = new MimeMessage();
    message.From.Add(new MailboxAddress("发送者名称", "yahooemail@yahoo.com"));
    message.To.Add(new MailboxAddress("接收者名称", "testemail@yopmail.com"));
    message.Subject = "Test";

    var bodyBuilder = new BodyBuilder
    {
        HtmlBody = emailBody ?? "<p>测试邮件内容</p>"
    };
    // 关键:将构造好的正文赋值给邮件对象
    message.Body = bodyBuilder.ToMessageBody();

    using (var client = new MailKit.Net.Smtp.SmtpClient())
    {
        try
        {
            // 连接SMTP服务器,也可以尝试端口587+STARTTLS:
            // await client.ConnectAsync("smtp.mail.yahoo.com", 587, false);
            // await client.StartTlsAsync();
            await client.ConnectAsync("smtp.mail.yahoo.com", 465, true);
            // 使用生成的应用密码代替原账号密码
            await client.AuthenticateAsync("yahooemail@yahoo.com", "你的Yahoo应用密码");

            await client.SendAsync(message);
            await client.DisconnectAsync(true);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"发送失败:{ex.Message}");
            if (client.IsConnected)
                await client.DisconnectAsync(false);
        }
    }
}

额外注意事项

  • 生成应用密码时,选择“邮件”或“其他应用”类型,复制密码后直接粘贴到代码中,不要修改密码格式。
  • 如果端口465连接失败,尝试切换到587端口,使用STARTTLS加密方式(代码中注释的部分)。
  • 若仍无法生成应用密码,联系Yahoo客服确认账号是否存在特殊限制(如地区限制、账号权限问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:44:57