在 C# 应用程序中发送邮件是企业开发中的常见需求。无论是项目进度通知、系统告警,还是自动化报表的分发,可靠的邮件功能都至关重要。
本文将详解如何使用 Spire.Email for .NET 组件在 C# 中发送邮件,简化 SMTP 通信及邮件格式处理流程。内容涵盖 SMTP 配置、HTML/纯文本邮件、附件添加以及群发功能等实用技巧。
文章目录
- 1. 项目配置
- 2. 用 C# 发送纯文本邮件
- 3. 用 C# 发送带附件的 HTML 邮件
- 4. C# 邮件发送进阶技巧:内嵌图片与批量群发
- 5. 常见错误排查
- 6. 典型应用场景
- 7. 免费授权申请
- 8. 常见问题
1. 项目配置
首先创建 .NET 项目(控制台或 ASP.NET),并添加 Spire.Email for .NET 组件包。
NuGet 安装:
Install-Package Spire.Email
对于小型项目,也可安装免费版 Free Spire.Email for .NET:
Install-Package FreeSpire.Email
2. 用 C# 发送基础纯文本邮件
以下示例演示如何通过 Spire.Email 使用 SMTP 协议发送纯文本邮件:
using Spire.Email;
using Spire.Email.Smtp;
// 配置SMTP客户端
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.example.com";
smtp.Port = 587;
smtp.Username = "your@example.com";
smtp.Password = "your_password";
smtp.ConnectionProtocols = ConnectionProtocols.StartTls;
// 创建邮件地址对象
MailAddress sender = new MailAddress("your@example.com", "发件人名称");
MailAddress recipient = new MailAddress("recipient@example.com", "收件人名称");
MailMessage message = new MailMessage(sender, recipient);
// 设置邮件内容
message.Subject = "测试邮件";
message.BodyText = "这是一封纯文本测试邮件";
// 发送邮件
smtp.SendOne(message);
核心要点:
- 使用 Spire.Email 的 MailAddress 和 MailMessage 类
- 通过 ConnectionProtocols.StartTls 建立安全连接
下图展示实际收到的邮件效果:
3. 用 C# 发送 HTML 格式带附件邮件
以下代码演示如何通过 126 邮箱的 SMTP 服务发送 HTML 格式邮件,支持群发、添加附件及纯文本备用内容:
using Spire.Email;
using Spire.Email.Smtp;
// 创建邮件地址对象
MailAddress from = new MailAddress("example@126.com", "发送用户");
MailAddress to1 = new MailAddress("example@gmail.com", "用户一");
MailAddress to2 = new MailAddress("example1@gmail.com", "用户二");
// 创建邮件主体
MailMessage message = new MailMessage(from, to1);
message.To.Add(to2);
message.Cc.Add(new MailAddress("example@icloud.com", "抄送人"));
message.Bcc.Add(new MailAddress("example@petalmail.com"));
// 设置HTML与纯文本内容
message.Subject = "2025年6月月度报告";
message.BodyHtml = "<h2 style='color:#2E86C1;'>报告摘要</h2><p>请查看附件PDF文档</p>";
message.BodyText = "报告摘要——请查看附件PDF文档";
// 添加PDF附件
Attachment attachment = new Attachment(@"Sample.pdf");
message.Attachments.Add(attachment);
// 配置Gmail SMTP
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.126.com";
smtp.Port = 465;
smtp.Username = "example@126.com";
smtp.Password = "your_password";
smtp.ConnectionProtocols = ConnectionProtocols.Ssl;
// 执行发送
smtp.SendOne(message);
技术细节:
- 同时设置 BodyHtml 和 BodyText,以兼容不同的邮件客户端
- 通过 To.Add()、Cc.Add() 和 Bcc.Add() 实现群发功能
- 使用 ConnectionProtocols.StartTls 保障通信安全性
下图展示收到的 HTML 邮件效果,包括富文本内容、群发收件人及 PDF 附件:
扩展阅读:C# 发送 HTML 邮件
4. C# 邮件发送进阶技巧:内嵌图片与批量群发
以下代码示例展示内嵌图片及批量处理等进阶邮件功能:
关键技术:
- 使用 ContentId 和 DispositionType 实现 HTML 邮件中图片的内嵌显示
- SendSome() 方法支持批量发送,适合定期报告或群发通知的场景
下图展示内嵌图片邮件的实际效果:
using Spire.Email;
using Spire.Email.Smtp;
// 创建带内嵌图片的邮件
MailMessage message = new MailMessage(
new MailAddress("your@domain.com", "发件人"),
new MailAddress("client@domain.com", "客户"));
message.Subject = "品牌更新通知";
message.BodyHtml = "<h1>新LOGO展示</h1><img src=\"cid:logo\">";
message.BodyText = "请使用HTML模式查看图片内容";
// 添加内嵌图片
Attachment logo = new Attachment(@"C:\Images\logo.png");
logo.ContentId = "logo";
logo.DispositionType = "Inline";
message.Attachments.Add(logo);
// 创建第二封邮件
MailMessage message2 = new MailMessage(
new MailAddress("your@domain.com"),
new MailAddress("sales@domain.com"));
message2.Subject = "周度汇总";
message2.BodyText = "这是自动生成的周度报告";
// 配置SMTP客户端
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.domain.com";
smtp.Port = 587;
smtp.Username = "your@domain.com";
smtp.Password = "your_password";
smtp.ConnectionProtocols = ConnectionProtocols.StartTls;
// 单封发送
smtp.SendOne(message);
// 批量发送
smtp.SendSome(new List<MailMessage> { message, message2 });
技术细节:
- 通过 ContentId 和 DispositionType 实现 HTML 内嵌图片
- SendSome() 方法支持批量发送,适合定期报告场景
下图展示内嵌图片邮件的实际效果:
推荐阅读:使用 C# 添加、提取、删除邮件附件
5. 常见错误排查
错误类型 | 可能原因 |
---|---|
认证失败 | 凭证错误,或未启用应用专用密码 |
需要安全连接 | 未配置 StartTLS 或 SSL 协议 |
HTML 内容不显示 | 未设置 BodyHtml 和 BodyText |
文件未找到 | 附件路径配置错误 |
6. 典型应用场景
Spire.Email 适用于以下业务需求:
- 自动化日报 / 周报邮件发送
- 用户注册通知邮件
- 含附件的订单确认邮件
- 表单提交提醒邮件
- 带图片的新闻简报或促销信息
其简洁的 API 可自动处理 SMTP 头、MIME 格式等底层细节,减少开发负担。
总结
借助 Spire.Email for .NET,开发者可以在 C# 应用中快速构建稳定灵活的邮件发送功能。无论是发送事务通知、生成格式化报表,还是定时推送新闻简报,该组件都提供了简洁可靠的 API,助力开发流程更加高效。
Spire.Email 支持纯文本与 HTML 格式邮件、附件添加、SMTP 通信、图片内嵌以及批量群发等多种特性,可在无需引入额外依赖的情况下,轻松实现邮件系统集成。
7. 免费临时授权申请
如需去除试用版水印,可申请免费的临时授权:
提交申请后,按指引应用授权,即可启用完整功能。
8. 常见问题
如何在 C# 中发送 HTML 邮件?
设置 MailMessage 对象的 BodyHtml 属性,建议同时设置 BodyText 作为备用内容。
如何实现邮件群发?
通过调用 message.To.Add()、Cc.Add() 和 Bcc.Add() 方法添加多个收件人地址。
ASP.NET 项目中如何使用?
SMTP 配置方式与控制台项目一致,可直接调用 SendOne() 或 SendOneAsync() 方法发送邮件。