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

在ASP.Net中使用Yahoo发送邮件遇到问题求助

问题描述

家中运行搭载IIS 10和.NET 4.8的Web服务器,通过C# .NET调用Yahoo SMTP服务发送邮件时始终失败。执行代码后网页加载约30秒,返回“SMTP Server returned an invalid response”错误,已耗时4小时未解决。

问题代码
using (MailMessage mm = new MailMessage("uneviesystems@yahoo.com", "MaxOvrdrv007@yahoo.ca"))
{
    mm.Subject = "test";
    mm.Body = "testing maudine...";
    mm.IsBodyHtml = false;
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.mail.yahoo.com";
    smtp.EnableSsl = true;
    
    NetworkCredential NetworkCred = new NetworkCredential("uneviesystems@yahoo.com", "*******");
    smtp.UseDefaultCredentials = true;
    smtp.Credentials = NetworkCred;
    smtp.Port = 465;
    try
    {
        smtp.Send(mm);
    }
    catch(SmtpException ex)
    {
        string p = "";
    }
            
}
解决方案
  • 修正凭证配置顺序:UseDefaultCredentials必须先设为false,再设置自定义Credentials。若先设为true,后续的专属凭证会被系统默认凭证覆盖,导致认证失败。修改代码:
    smtp.UseDefaultCredentials = false;
    smtp.Credentials = NetworkCred;
    
  • 替换为Yahoo应用密码:Yahoo目前要求开启两步验证的账户使用应用密码替代原账户密码登录SMTP服务。若你的账户开启了两步验证,需在Yahoo账户设置中生成专属应用密码,替换代码中的*******。
  • 切换SMTP端口测试:端口465为SMTPS协议,部分环境下.NET的SmtpClient对其支持存在兼容性问题,可尝试改用端口587(STARTTLS协议),保持EnableSsl = true不变。
  • 完善异常排查逻辑:当前catch块未记录任何错误信息,建议修改为输出详细异常内容,方便定位问题:
    catch(SmtpException ex)
    {
        // 可将错误写入日志或返回至页面
        string errorMsg = $"SMTP错误:{ex.Message},状态码:{ex.StatusCode}";
        // 示例:Response.Write(errorMsg);
    }
    catch(Exception ex)
    {
        string errorMsg = $"通用错误:{ex.Message}";
        // 输出错误信息
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:40:29