C#實現(xiàn)電子郵件發(fā)送功能(支持普通文本,HTML和附件)
在日常開發(fā)或自動化任務(wù)中,發(fā)送電子郵件仍然是最常用的數(shù)據(jù)傳遞方式之一。通過代碼發(fā)送郵件,不僅可以提高效率,還能實現(xiàn)批量通知、報表推送等功能。本文將介紹如何使用 C# 發(fā)送包含普通文本、HTML 正文以及附件的電子郵件,并提供完整的示例代碼。
本文使用 Free Spire.Email for .NET,可通過 NuGet 安裝:
Install-Package FreeSpire.Email
使用 C# 創(chuàng)建郵件消息
Spire.Email 提供 MailAddress 和 MailMessage 類來構(gòu)建郵件內(nèi)容。你可以輕松添加多個收件人、抄送(Cc)、密送(Bcc)對象,并指定郵件的文本和 HTML 內(nèi)容。
設(shè)置發(fā)件人、收件人和郵件內(nèi)容
代碼示例:
using Spire.Email;
using Spire.Email.Smtp;
// 創(chuàng)建發(fā)件人和收件人地址
MailAddress from = new MailAddress("Example@gmail.com", "你的名字");
MailAddress to1 = new MailAddress("Example1@gmail.com", "用戶1");
MailAddress to2 = new MailAddress("Example@126.com", "用戶2");
// 創(chuàng)建郵件消息對象
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")); // 添加密送人
// 設(shè)置郵件主題、HTML 正文和純文本正文
message.Subject = "月次報告 - 2025年6月";
message.BodyHtml = "<h2 style='color:#2E86C1;'>報告概要</h2><p>請查收附件中的 PDF 報告。</p>";
message.BodyText = "報告概要 - 請查收附件中的 PDF。";
該示例同時設(shè)置了文本正文和 HTML 正文,客戶端將根據(jù)支持情況優(yōu)先顯示 HTML 內(nèi)容。
添加郵件附件
郵件附件可通過 Attachment 類添加,例如 PDF 報表、Excel 文件等。
代碼示例:
// 添加附件 Attachment attachment = new Attachment(@"Sample.pdf"); message.Attachments.Add(attachment);
只需提供文件路徑,即可將其添加為郵件附件。
配置 SMTP 并發(fā)送郵件
SMTP(簡單郵件傳輸協(xié)議)用于將郵件從客戶端發(fā)送到服務(wù)器。Spire.Email 提供 SmtpClient 類來連接并發(fā)送郵件。
代碼示例:
// 配置 SMTP 客戶端 SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; // SMTP 服務(wù)器地址 smtp.Port = 587; // TLS 使用的端口號 smtp.Username = "Example@gmail.com"; // 郵箱用戶名 smtp.Password = "your_password"; // 應(yīng)用專用密碼 smtp.ConnectionProtocols = ConnectionProtocols.StartTls; // 使用 TLS 加密協(xié)議 // 發(fā)送郵件 smtp.SendOne(message);
注意:Gmail 發(fā)送郵件需要啟用“應(yīng)用專用密碼”,并確保啟用了 SMTP 服務(wù)。
完整代碼示例
以下是完整的郵件發(fā)送代碼,整合了所有功能:
using Spire.Email;
using Spire.Email.Smtp;
// 創(chuàng)建發(fā)件人和收件人
MailAddress from = new MailAddress("your_email@gmail.com", "你的名字");
MailAddress to1 = new MailAddress("user1@example.com", "用戶1");
MailAddress to2 = new MailAddress("user2@example.com", "用戶2");
// 創(chuàng)建郵件對象
MailMessage message = new MailMessage(from, to1);
message.To.Add(to2);
message.Cc.Add(new MailAddress("cc@example.com", "抄送人"));
message.Bcc.Add(new MailAddress("bcc@example.com", "密送人"));
// 設(shè)置主題和正文
message.Subject = "月次報告 - 2025年6月";
message.BodyHtml = "<h2>報告概要</h2><p>請查收附件中的 PDF 報告。</p>";
message.BodyText = "報告概要 - 請查收附件中的 PDF 文件。";
// 添加附件
Attachment attachment = new Attachment(@"G:\Documents\Sample.pdf");
message.Attachments.Add(attachment);
// 配置 SMTP 客戶端并發(fā)送郵件
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Username = "your_email@gmail.com";
smtp.Password = "your_app_password";
smtp.ConnectionProtocols = ConnectionProtocols.StartTls;
smtp.SendOne(message);
郵件發(fā)送結(jié)果:

總結(jié)
通過 Free Spire.Email for .NET,C# 開發(fā)者可以輕松實現(xiàn)功能豐富的郵件發(fā)送任務(wù),包括:
- 發(fā)送普通文本和 HTML 格式的郵件內(nèi)容,兼容各種郵件客戶端;
- 支持多個收件人、抄送與密送,滿足業(yè)務(wù)通知需求;
- 添加附件,適合發(fā)送報告、圖片、合同等;
- 配置 SMTP 客戶端,支持 Gmail、Outlook、企業(yè)郵箱等常見平臺。
這些功能適用于自動化報告推送、系統(tǒng)告警通知、用戶郵件服務(wù)等多種場景。
到此這篇關(guān)于C#實現(xiàn)電子郵件發(fā)送功能(支持普通文本,HTML和附件)的文章就介紹到這了,更多相關(guān)C#發(fā)送郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用MSScriptControl 在 C# 中讀取json數(shù)據(jù)的方法
下面小編就為大家?guī)硪黄褂肕SScriptControl 在 C# 中讀取json數(shù)據(jù)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
C#結(jié)合數(shù)據(jù)庫實現(xiàn)驗證識別ID卡內(nèi)容的方法
這篇文章主要介紹了C#結(jié)合數(shù)據(jù)庫實現(xiàn)驗證識別ID卡內(nèi)容的方法,非常實用的功能,需要的朋友可以參考下2014-07-07
C#中神器類BlockingCollection的實現(xiàn)詳解
如果你想玩轉(zhuǎn)C#?里面多線程,工廠模式,生產(chǎn)者/消費者,隊列等高級操作,就可以和我一起探索這個強大的線程安全提供阻塞和限制功能的C#神器類BlockingCollection吧2023-02-02
C# 圖片與Base64碼的相互轉(zhuǎn)化問題(代碼詳解)
這篇文章主要介紹了C# 圖片與Base64碼的相互轉(zhuǎn)化的代碼,通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03

