C# 使用 System.Net.Mail 发送邮件完整示例

月亮慢半拍
月亮慢半拍
发布时间:2026-10-14 | 6人浏览过
原创

在 .NET 开发中,System.Net.Mail 是执行 SMTP 邮件发送的核心命名空间。通过配置 SmtpClient 主机地址、端口及凭据,结合 MailMessage 构建邮件内容,即可实现程序化邮件投递。本文提供完整的 C# 代码示例,涵盖基础属性设置与异常捕获机制。

邮件发送核心类库

C# 邮件功能主要依赖 System.Net.Mail 命名空间中的两个关键类:

  • MailMessage:用于封装邮件的详细数据,包括发件人、收件人、抄送人、主题、正文内容及优先级等。
  • SmtpClient:负责将邮件消息传输到指定的 SMTP 服务器进行实际投递,需配置 Host(主机)、Port(端口)和 Credentials(认证凭据)。

代码实现步骤

第1步:构建邮件消息对象 (MailMessage)

首先实例化 MailMessage 并设置各项属性。这决定了邮件的内容结构。

using System.Net;
using System.Net.Mail;

public void SendEmailExample()
{
    // 1. 创建邮件消息对象
    MailMessage mm = new MailMessage();

    // 2. 设置收件人 (支持多个)
    // 第二个参数为显示名称,可选
    mm.To.Add(new MailAddress("recipient@example.com", "Recipient Name"));

    // 3. 设置发件人
    mm.From = new MailAddress("sender@example.com", "Sender Name");

    // 4. 设置主题
    mm.Subject = "测试邮件主题";

    // 5. 设置正文内容
    // 如果内容包含 HTML 标签,必须将 IsBodyHtml 设为 true
    mm.Body = "<h3>这是一封由 C# 代码发送的 HTML 格式邮件</h3><p>正文内容...</p>";
    mm.IsBodyHtml = true;

    // 6. 设置优先级 (Normal, Low, High)
    mm.Priority = MailPriority.High;
}

第2步:配置 SMTP 客户端 (SmtpClient)

实例化 SmtpClient 并指定服务器的连接信息。不同邮箱服务商(如新浪、网易、QQ)的主机和端口可能不同。

    // 创建 SMTP 客户端
    SmtpClient smtClient = new SmtpClient();

    // 指定 SMTP 服务器主机地址
    // 示例以新浪邮箱为例,常见地址如 smtp.163.com, smtp.qq.com
    smtClient.Host = "smtp.sina.com";

    // 指定端口号
    // 常见端口:25 (默认), 465 (SSL), 587 (TLS)
    smtClient.Port = 25;

    // 设置认证凭据
    // NetworkCredential 需要用户名和密码(通常是授权码而非登录密码)
    smtClient.Credentials = new NetworkCredential("your_username@sina.com", "your_password_or_auth_code");

    // 设置发送方法:通过网络直接发送
    smtClient.DeliveryMethod = SmtpDeliveryMethod.Network;
}

第3步:执行发送与异常处理

调用 Send 方法执行发送操作。由于网络波动或服务器限制,务必包裹在 try-catch 块中以捕获 SmtpException。

    try
    {
        // 同步发送
        smtClient.Send(mm);
        // 若需异步可调用 smtClient.SendAsync(mm);
    }
    catch (SmtpException ex)
    {
        // 处理 SMTP 相关错误,如认证失败、连接超时
        Console.WriteLine($"SMTP Error: {ex.Message}");
    }
    catch (Exception ex)
    {
        // 处理其他通用异常
        Console.WriteLine($"General Error: {ex.Message}");
    }
}

关键注意事项

  1. 认证权限:大多数公共 SMTP 服务器要求身份验证。现代邮箱服务通常要求使用“授权码”而非账号密码登录第三方客户端。
  2. 安全连接:如果在端口 25 上无法发送,可能需要启用 SSL/TLS。在较新版本的 .NET Core/5+ 中,推荐使用 SmtpClient.EnableSsl = true; 并配合合适的端口(如 465 或 587)。
  3. 垃圾邮件过滤:标题和正文避免包含过多敏感词,确保发件人域名具有正确的 SPF/DKIM 记录,以提高到达率。

总结

通过 System.Net.Mail 命名空间,开发者可以灵活地在 C# 应用中集成邮件功能。关键在于正确配置 SmtpClient 的连接参数并确保邮件内容的格式符合预期。以上就是 C# 使用 System.Net.Mail 方式发送邮件的详细内容,更多关于 C# 邮件开发技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表