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

C# WinForm中NetworkCredentials配置问题:邮件发送功能异常求助

C# WinForm 发送邮件 NetworkCredentials 配置问题解决指南

常见配置错误点

  • 用登录密码代替第三方授权码:国内主流邮箱(QQ、网易、新浪等)都要求用授权码而非登录密码进行SMTP验证,直接用登录密码会导致验证失败
  • SMTP服务器/端口不匹配:不同邮箱的SMTP地址和加密端口不一样,比如QQ邮箱SMTP是smtp.qq.com,SSL端口465;网易163是smtp.163.com,SSL端口465
  • 未启用邮箱SMTP服务:大部分邮箱默认关闭SMTP服务,需要手动在网页端设置里开启
  • Credentials赋值错误:确保NetworkCredential的第一个参数是发件人邮箱完整地址,第二个是授权码/正确密码

新手友好的完整代码示例

在按钮点击事件中添加以下代码(替换成你的邮箱信息):

private void btnSend_Click(object sender, EventArgs e)
{
    // 获取文本框中的收件人邮箱
    string recipient = txtEmail.Text.Trim();
    if (string.IsNullOrWhiteSpace(recipient))
    {
        MessageBox.Show("请输入收件人邮箱地址");
        return;
    }

    try
    {
        // 构建邮件内容
        MailMessage mail = new MailMessage();
        mail.From = new MailAddress("你的发件邮箱@xxx.com");
        mail.To.Add(recipient);
        mail.Subject = "WinForm测试邮件";
        mail.Body = "这是通过C# WinForm发送的测试邮件";

        // 配置SMTP客户端
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.qq.com"; // 替换为你的邮箱SMTP服务器
        smtp.Port = 465; // SSL加密端口
        smtp.EnableSsl = true; // 启用加密
        // 核心配置:发件人邮箱 + 授权码(不是登录密码)
        smtp.Credentials = new NetworkCredential("你的发件邮箱@xxx.com", "你的邮箱授权码");

        // 发送邮件
        smtp.Send(mail);
        MessageBox.Show("邮件发送成功!");
    }
    catch (Exception ex)
    {
        // 捕获异常并提示具体错误,方便排查
        MessageBox.Show($"发送失败:{ex.Message}");
    }
}

必做前置操作

  • 登录你的发件邮箱网页端,找到「设置-账户」页面,开启POP3/SMTP服务
  • 按照邮箱提示生成授权码,这个授权码就是NetworkCredential需要的密码参数
  • 确认防火墙/杀毒软件没有阻止程序访问SMTP服务器端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:30:58