C# 使用 System.Net.Mail 发送邮件完整示例
在 .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}");
}
}
关键注意事项
- 认证权限:大多数公共 SMTP 服务器要求身份验证。现代邮箱服务通常要求使用“授权码”而非账号密码登录第三方客户端。
- 安全连接:如果在端口 25 上无法发送,可能需要启用 SSL/TLS。在较新版本的 .NET Core/5+ 中,推荐使用
SmtpClient.EnableSsl = true;并配合合适的端口(如 465 或 587)。 - 垃圾邮件过滤:标题和正文避免包含过多敏感词,确保发件人域名具有正确的 SPF/DKIM 记录,以提高到达率。
总结
通过 System.Net.Mail 命名空间,开发者可以灵活地在 C# 应用中集成邮件功能。关键在于正确配置 SmtpClient 的连接参数并确保邮件内容的格式符合预期。以上就是 C# 使用 System.Net.Mail 方式发送邮件的详细内容,更多关于 C# 邮件开发技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













