.NET實作郵件發送的程式碼詳解
這篇文章主要為大家詳細介紹了ASP.NET Core發送郵件的方法,告訴大家如何在ASP.NET Core中發送郵件,具有一定的參考價值,有興趣的小伙伴們可以參考一下
前言
我們知道目前.NET Core 還不支援SMTP 協議,當我麼在使用到發送郵件功能的時候,需要藉助於一些第三方元件來達到目的,今天要為大家介紹兩款開源的郵件發送元件,它們分別是MailKit 和FluentEmail ,以下我將它們分別介紹。
MailKit
在 ASP.NET Core 中,可以使用 MailKit 來傳送郵件,它支援跨平台,並且支援 IMAP, POP3, SMTP 等協定。
你可以用下面的方式安裝:
Install-Package MailKit
下面是一個簡單的傳送郵件的範例:
var message = new MimeMessage (); message.From.Add (new MailboxAddress ("Joey Tribbiani", "joey@friends.com")); message.To.Add (new MailboxAddress ("Mrs. Chanandler Bong", "chandler@friends.com")); message.Subject = "星期天去哪里玩?"; message.Body = new TextPart ("plain") { Text = "我想去故宫玩,如何" }; using (var client = new SmtpClient ()) { // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS) client.ServerCertificateValidationCallback = (s,c,h,e) => true; client.Connect ("smtp.friends.com", 587, false); // Note: since we don't have an OAuth2 token, disable // the XOAUTH2 authentication mechanism. client.AuthenticationMechanisms.Remove ("XOAUTH2"); // Note: only needed if the SMTP server requires authentication client.Authenticate ("joey", "password"); client.Send (message); client.Disconnect (true); }
如果你要傳送的Body 內容是HTML 的話,你可以使用下面這種:
var bodyBuilder = new BodyBuilder(); bodyBuilder.HtmlBody = @"<b>This is bold and this is <i>italic</i></b>"; message.Body = bodyBuilder.ToMessageBody();
Fluent Email
#Fluent Email 這個也是一個開源項目,利用它,你可以使用Razor 模板來發送郵件,並且可以集成一些第三方的郵件發送程序比如Mailgun等,但是此包只在.NET 4.6 下才支援SMTP 。你可以使用以下命令來安裝它:
Install-Package FluentEmail.Razor
你可以使用最基本的方式來發送郵件,很簡單如下:
//注意: .NET 4.6 才支持 Email.DefaultSender = new SmtpSender(); var email = Email .From("foo@email.com") .To("bar@email.com", "bob") .Subject("星期天去哪里玩?") .Body("我想去故宫玩,如何?"); await email.SendAsync();
或者,你可以使用Razor 模板來發送:
//注意: .NET 4.6 才支持 Email.DefaultSender = new SmtpSender(); // Using Razor templating package Email.DefaultRenderer = new RazorRenderer(); var template = "Dear @Model.Name, You are totally @Model.Compliment."; var email = Email .From("bob@hotmail.com") .To("somedude@gmail.com") .Subject("woo nuget") .UsingTemplate(template, new { Name = "Luke", Compliment = "Awesome" });
Email.DefaultRenderer 是告訴FulentEmail 使用哪個渲染器(你也可以自己實作一個自己的),然後提供了一個template 模板,內容為Razor 語法的模板字串,然後使用UsingTemplate## 來進行渲染呈現。
磁碟上的cshtml 模板
加入你的郵件Razor 模板檔案比較大,用字串來表示的話不太優雅,那麼你可以把模板檔案放到磁碟上,然後使用以下方式來載入://注意: .NET 4.6 才支持 Email.DefaultSender = new SmtpSender(); Email.DefaultRenderer = new RazorRenderer(); var email = Email .From("foo@email.com") .To("bar@email.com", "bob") .Subject("星期天去哪里玩?") .UsingTemplateFromFile($"{Directory.GetCurrentDirectory}/EmailTemplage.cshtml", new {Name ="Luke"})
使用Mailgun 發送郵件
可能有一些人對Mailgun 還不太清楚,Mailgun 是國外的一個郵件服務公司,例如著名的Github 的郵件服務就託管在它的上面,免費的Maingun 帳戶每個月可以發送10000 封郵件,對於很多中小網站足夠用了。 當使用 Mailgun 來發送郵件的時候,你首先需要去註冊一個帳號,然後可以利用 Mailgun 提供的 RestAPI 來管理發送或接收的郵件。使用FluentEmail 整合的Mailgun只需要加入以下套件:
Install-Package FluentEmail.Mailgun
// 同时支持 .NET Core 和 .NET Framework var sender = new MailgunSender( "sandboxcf5f41bbf2f84f15a386c60e253b5fe8.mailgun.org", // Mailgun 二级域名 "key-8d32c046d7f14ada8d5ba8253e3e30df" // Mailgun API Key ); Email.DefaultSender = sender; var email = Email .From("foo@email.com") .To("bar@email.com", "bob") .Subject("星期天去哪里玩?") .Body("我想去故宫玩,如何?"); await email.SendAsync();
總結
透過上述範例我們可以看出MailKit 和FluentEmail各有優缺點。 MailKit 的優點是支援的協定比較多,而且是跨平台的,但是缺點是沒有提供對 Razor的支持,並且如果使用 Mailgun 的話需要自己進行整合。 那麼 FlentEmail 的優點是提供了 Razor 範本的支援並且封裝了 Mailgun, 缺點是 SMTP 協定還沒有提供對 .NET Core 的支援。 綜上所述,如果你使用Mailgun 來傳送郵件的話,那麼FluentEmail 是你應該選擇的,如果你想使用SMTP 協定連結到自己的郵件伺服器來傳送郵件的話,那麼你應該用MailKit 。 【相關推薦】1. #2. # 3.以上是.NET實作郵件發送的程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

C語言中通過轉義序列處理特殊字符,如:\n表示換行符。 \t表示製表符。使用轉義序列或字符常量表示特殊字符,如char c = '\n'。注意,反斜杠需要轉義兩次。不同平台和編譯器可能有不同的轉義序列,請查閱文檔。

在 C 語言中,char 類型在字符串中用於:1. 存儲單個字符;2. 使用數組表示字符串並以 null 終止符結束;3. 通過字符串操作函數進行操作;4. 從鍵盤讀取或輸出字符串。

C 語言中符號的使用方法涵蓋算術、賦值、條件、邏輯、位運算符等。算術運算符用於基本數學運算,賦值運算符用於賦值和加減乘除賦值,條件運算符用於根據條件執行不同操作,邏輯運算符用於邏輯操作,位運算符用於位級操作,特殊常量用於表示空指針、文件結束標記和非數字值。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

在 C 語言中,char 和 wchar_t 的主要區別在於字符編碼:char 使用 ASCII 或擴展 ASCII,wchar_t 使用 Unicode;char 佔用 1-2 個字節,wchar_t 佔用 2-4 個字節;char 適用於英語文本,wchar_t 適用於多語言文本;char 廣泛支持,wchar_t 依賴於編譯器和操作系統是否支持 Unicode;char 的字符範圍受限,wchar_t 的字符範圍更大,並使用專門的函數進行算術運算。

在 C 語言中,char 類型轉換可以通過:強制類型轉換:使用強制類型轉換符將一種類型的數據直接轉換為另一種類型。自動類型轉換:當一種類型的數據可以容納另一種類型的值時,編譯器自動進行轉換。

char 數組在 C 語言中存儲字符序列,聲明為 char array_name[size]。訪問元素通過下標運算符,元素以空終止符 '\0' 結尾,用於表示字符串終點。 C 語言提供多種字符串操作函數,如 strlen()、strcpy()、strcat() 和 strcmp()。

C語言中沒有內置求和函數,需自行編寫。可通過遍歷數組並累加元素實現求和:循環版本:使用for循環和數組長度計算求和。指針版本:使用指針指向數組元素,通過自增指針遍歷高效求和。動態分配數組版本:動態分配數組並自行管理內存,確保釋放已分配內存以防止內存洩漏。
