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

MVC发送邮件报错求助:SMTP 5.7.1认证失败

解决SMTP认证失败的问题

这个错误的核心是凭证设置顺序错误,再加上Yahoo邮箱当前的安全机制限制,咱们一步步来修复:

1. 最关键的代码错误:凭证被覆盖

你代码里先设置了SmtpServer.Credentials,随后又写了SmtpServer.UseDefaultCredentials = true;——这会直接覆盖你自定义的邮箱凭证,系统会尝试用当前Windows账户的默认凭证登录SMTP服务器,自然会触发认证失败。

正确的操作顺序是:先把UseDefaultCredentials设为false,再设置自定义的Credentials。

2. 适配Yahoo邮箱的安全要求

现在Yahoo邮箱如果默认开启了两步验证,普通登录密码无法用于第三方SMTP客户端,你需要生成一个应用专用密码:

  • 登录Yahoo账户,进入「账户安全」设置页
  • 找到「应用密码」选项(需先开启两步验证)
  • 生成一个用于SMTP服务的应用密码,替换代码里的"password"

修正后的完整代码

// Plug in your email service here to send an email.
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.mail.yahoo.com");

mail.From = new MailAddress("elahi2mahdi@yahoo.com", "Hello");
mail.To.Add(message.Destination);
mail.Subject = message.Subject;
mail.Body = message.Body;
mail.IsBodyHtml = true;

// 调整凭证设置顺序,先禁用默认凭证
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("elahi2mahdi@yahoo.com", "你的应用专用密码");
SmtpServer.Port = 587;
SmtpServer.EnableSsl = true;

return SmtpServer.SendMailAsync(mail);

额外检查项

  • 确认你的Yahoo邮箱账户已开启SMTP服务(大部分默认开启,可在账户设置中确认)
  • 如果未开启两步验证,可暂时关闭邮箱的「安全登录」限制测试发送(不推荐长期关闭,建议优先使用应用密码)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:24:06