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

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

在 .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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。