發(fā)起的.NET Core開源組織號(hào)召,進(jìn)展的速度是我自己也沒有想到的,很多園友都積極參與(雖然有些人誠(chéng)心砸場(chǎng)子,要是以我以前的寶脾氣,這會(huì)應(yīng)該被我打住院了吧,不過幸好是少數(shù),做一件事總有人說(shuō)好,也有人說(shuō)是用武漢話說(shuō)“鬧眼子”),.NET社區(qū)不是沒有樂于共享知識(shí)的人,只是沒有一個(gè)完整和良好的生態(tài)環(huán)境,總之希望國(guó)內(nèi)的.NET發(fā)展越來(lái)越強(qiáng)大。我在這里想到一句話“我們希望自己可以做巨浪,但我們也甘愿做巨浪來(lái)襲前的小浪”。
上面扯淡完畢(我這人干正事前,都要將一些扯淡的話,這個(gè)習(xí)慣改不掉了...)
項(xiàng)目中為了及時(shí)的通信,有直接發(fā)數(shù)據(jù)到頁(yè)面,也有利用短信通知,也有我門今天介紹的郵件組件。我們今天的主要任務(wù)就是講解一下有一個(gè).NET的免費(fèi)開源的郵件組件MailKit。本文將一如既往的結(jié)合實(shí)例和組件底層代碼講解一下相關(guān)組件的知識(shí)。(項(xiàng)目招人的時(shí)候,我都會(huì)問一下.NET的底層原理,有一個(gè)大神問我這樣有什么意義嗎?我們也寫不出.NET底層那樣的優(yōu)秀處理方式,為何取了解這些,其實(shí)我個(gè)人覺得,問底層的原理,只是向?yàn)榱烁玫奶幚硪恍┏绦虺霈F(xiàn)的問題,以及對(duì)程序編碼的時(shí)候,選擇最合適的方式提升性能,任何一種方式都有優(yōu)勢(shì)和劣勢(shì),.NET的類庫(kù)代碼也是如此,如果我們知道.NET的底層實(shí)現(xiàn),我們?cè)陧?xiàng)目的需求實(shí)現(xiàn)時(shí),可以根據(jù).NET底層實(shí)現(xiàn),選擇合適的方式,以求性能最優(yōu))。
一.Mailkit組件概述
項(xiàng)目中使用Email的操作機(jī)會(huì)比較多,一般稍微大一點(diǎn)的項(xiàng)目,都會(huì)使用到郵件操作這一個(gè)操作。對(duì)于.NET郵件操作的組件和方式比較多,今天我們就介紹一款郵件操作的組件MailKit,這個(gè)郵件組件是一個(gè)開源免費(fèi)的,我們現(xiàn)在就來(lái)了解一下這一個(gè)組件的特點(diǎn)。MimeKit旨在通過盡可能接近地遵循MIME規(guī)范來(lái)解決這個(gè)問題,同時(shí)還為程序員提供了一個(gè)非常容易使用的高級(jí)API。
組件的支持的客戶端類型比較多,例如SMTP客戶端、POP3客戶端、IMAP客戶端。該組件是一個(gè)跨平臺(tái)的Email組件,該組件支持.NET 4.0,.NET 4.5,Xamarin.Android,Xamarin.iOS,Windows Phone 8.1等等平臺(tái)。該組件提供了一個(gè)MIME解析器,組件具備的解析特性靈活、性能高、很好的處理各種各樣的破碎的MIME格式化。MimeKit的性能實(shí)際上與GMime相當(dāng)。
該組件在安全性的還是比較高的,處理安全的方式較多,SASL認(rèn)證、支持S / MIME v3.2、支持OpenPGP、支持DKIM簽名等等方式。Mailkit組件可以通過CancellationToken取消對(duì)應(yīng)的操作,CancellationToken傳播應(yīng)取消操作的通知,一個(gè)的CancellationToken使線程,線程池工作項(xiàng)目之間,或取消合作任務(wù)的對(duì)象。過實(shí)例化CancellationTokenSource