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)文章
C#中Html.RenderPartial與Html.RenderAction的區(qū)別分析
這篇文章主要介紹了C#中Html.RenderPartial與Html.RenderAction的區(qū)別分析,需要的朋友可以參考下2014-07-07C#對XtraGrid控件實現(xiàn)主從表關(guān)系綁定
這篇文章介紹了C#對XtraGrid控件實現(xiàn)主從表關(guān)系綁定的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06C#實現(xiàn)將類的內(nèi)容寫成JSON格式字符串的方法
這篇文章主要介紹了C#實現(xiàn)將類的內(nèi)容寫成JSON格式字符串的方法,涉及C#針對json格式數(shù)據(jù)轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08