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

C#使用SmtpClient发送邮件遇SMTP认证/安全连接错误求助

解决SMTP认证失败问题

你的代码中存在核心配置错误,导致SMTP服务器拒绝认证:

关键错误修正

smtpClient.UseDefaultCredentials = true会强制使用系统默认凭证,直接覆盖你后续设置的邮箱账号和密码。必须先将其设为false,再配置自定义凭证。

同时,mail.com的587端口要求SSL加密连接,所以EnableSsl必须设为true。

修改后的核心配置代码:

// Configure SMTP client
SmtpClient smtpClient = new SmtpClient("smtp.mail.com", 587);
smtpClient.UseDefaultCredentials = false; // 先禁用默认凭证
smtpClient.Credentials = new NetworkCredential(email, password);
smtpClient.EnableSsl = true; // 开启SSL加密

完整修正后的SendEmailAsync方法

static async Task SendEmailAsync(string recipientEmail, string subject, string body)
{
    // configure sending email address and password
    string email = "********@mail.com";
    string password = "********"; // 确保是mail.com的应用专用密码

    // Create email message
    MailMessage message = new MailMessage();
    message.From = new MailAddress(email); // 保持和登录邮箱一致
    message.To.Add(recipientEmail);
    message.Subject = subject;
    message.Body = body;
    
    // Configure SMTP client
    SmtpClient smtpClient = new SmtpClient("smtp.mail.com", 587);
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = new NetworkCredential(email,password);
    smtpClient.EnableSsl = true;

    await smtpClient.SendMailAsync(message);
}

额外排查点

  • 确认应用专用密码完全正确,复制时没有遗漏或多余字符
  • 确保发件人邮箱(message.From)和登录邮箱(email变量)完全一致
  • 检查mail.com账户是否已开启SMTP服务(部分邮箱需在账户设置中手动启用)
  • 验证本地防火墙或杀毒软件未拦截SMTP(587端口)的出站连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:23:22