.NET使用MailKit進行郵件處理

2021-03-06 DotNet開發跳槽

0.介紹

MimeKit and MailKit are popular fully-featured email frameworks for .NET
框架支持版本如下
Supports .NET 4.5, .NET 4.6, .NET 4.7, .NET 4.8, .NET 5.0, .NETStandard 2.0, Xamarin.Android, Xamarin.iOS, Windows Phone 8.1, and more.

MailKit是最流行且最強大的.NET郵件處理框架之一,下面為大家簡單介紹MailKit的使用方式(IMAP為例)

1. 參考資料

Github https://github.com/jstedfast/MailKit
官方Doc http://www.mimekit.net/docs/html/Introduction.htm

2.核心內容(IMAP為例)

加密

client.Connect("imap.exmail.qq.com", 993, SecureSocketOptions.SslOnConnect);

不加密

client.Connect("imap.exmail.qq.com", 143, SecureSocketOptions.None);

client.Authenticate(MAIL_NAME, MAIL_PASSWORD);

client.Inbox.Open(FolderAccess.ReadWrite);

讀取方式一:可以預先篩選郵件

search for messages where the Subject header contains either "MimeKit" or "MailKit"
var query = SearchQuery.SubjectContains("MimeKit").Or(SearchQuery.SubjectContains("MailKit"));
var uids = client.Inbox.Search(query);

讀取方式二:讀取所有郵件

var uids = client.Inbox.Search(SearchQuery.All);

操作郵件一:讀取郵件標題

string subject = message.Subject;
if (!subject.Contains("MimeKitDemo"))
return;

操作郵件二:讀取正文

string body = message.TextBody ?? string.Empty;
if (!body.Contains("MimeKitDemoBody"))
return;

操作郵件三:下載郵件附件

var attachments = message.Attachments;
if (attachments.Any())
{
foreach (var attachment in attachments)
DownloadAttachment(attachment);
}

private static void DownloadAttachment(MimeEntity attachment)
{
if (attachment is MessagePart)
{
var fileName = attachment.ContentDisposition?.FileName;
var rfc822 = (MessagePart)attachment;

if (string.IsNullOrEmpty(fileName))
fileName = "attached-message.eml";

var path = Path.Combine(DIRECTORY, fileName);
using (var stream = File.Create(path))
rfc822.Message.WriteTo(stream);
}
else
{
var part = (MimePart)attachment;
var fileName = part.FileName;

var path = Path.Combine(DIRECTORY, fileName);
using (var stream = File.Create(path))
part.Content.DecodeTo(stream);
}
}

操作郵件四:移動郵件(移動至刪除文件夾)


client.Inbox.MoveTo(uid, client.GetFolder(SpecialFolder.Trash));

操作郵件五:刪除郵件 - 將郵件標記為刪除、最後刪除

client.Inbox.AddFlags(uid, MessageFlags.Deleted, true);
client.Inbox.Expunge();

3.樣例源碼地址

https://github.com/Impartsoft/Bins/tree/main/MailKitDemo

歡迎大家批評指正,共同學習,共同進步!
作者:Iannnnnnnnnnnnn

出處:https://www.cnblogs.com/Iannnnnnnnnnnnn

版權申明:本文來源於網友收集或網友提供,如果有侵權,請轉告版主或者留言,本公眾號立即刪除。

相關焦點

  • RUSHMAIL:會展行業怎麼使用郵件群發系統
    想要讓目標企業、客戶參與展會,就需要對目標進行宣傳,展會的核心是低成本、高質量的溝通與合作,那麼其使用的宣傳方式也不應該離開這個核心要點,使用一個專業的郵件群發系統,就是一種幫助展會對於目標企業、客戶進行宣傳的低成本高質量的方式。
  • 郵件伺服器概念解釋以及MAIL的工作原理
    然後,郵件伺服器根據你註明的收件人地址,按照當前網上傳輸的情況,尋找一條最不擁擠的路徑,將信件傳到下一個郵件伺服器。接著,這個伺服器也如法炮製,將信件往下傳送。這樣層層向下傳遞,最終到達用戶手中。 最後,E-mail被送到用戶服務商的伺服器上,保存在伺服器上的用戶E-mail信箱中。用戶個人終端電腦通過與伺服器的連接從其信箱中讀取自己的E-mail。
  • Rushmail:群發郵件軟體無底線免費體驗
    2、註冊信通道  註冊信相對來講數量較小,精準度高,時效性要求高,通常需要進行系統對接,那麼該通道ip資源優質,系統處理效率高,支持系統對接,並會對客戶郵件的安全進行加強,積極防止客戶郵件被截獲。  3、電子帳單通道  電子帳單相對郵件比較大,精準度高,時效性相對不高,需要進行系統對接,該通道郵件發送效率最高,支持大附件,支持系統對接,ip資源優質,郵件安全加強,速度可調,數據統計及時反饋發送效果。
  • Rushmail:時下有效的郵件群發策略
    而郵件群發的另一個關鍵點就當屬郵件服務商的郵件攔截機制了。這個機制是十分複雜的,首先它對郵件內容的文字進行掃描過濾,像一些敏感的字眼例如「國」這樣的字眼最好不要出現。其次是郵件的發送頻率,這個要根據你目標客戶地址的郵箱服務商所決定的,為了保證整體一個發送效果,建議發送的頻率要控制好,如果你使用郵件群發軟體的話,建議你的發送頻率控制在每天100到200封。
  • 通過探測郵件伺服器進行Email地址有效性檢驗
    一般的檢驗方法是對Email地址字符串進行簡單的格式檢驗,如是否含有@.等有效字符等。這種方法只能保證該地址從格式上看似有效,並不能保證地址可達。最近進行大量的地址校驗,寫了一個小程序,可以檢測Email地址是否真正可達。Email地址包括兩個部分:用戶名和郵件伺服器。因此,檢驗郵件地址可以分為兩步進行:首先檢驗郵件伺服器,然後檢驗用戶名。
  • 如何使用Django發送電子郵件和附件
    EMAIL_HOST='smtp.sendgrid.net'EMAIL_HOST_USER='username'EMAIL_HOST_PASSWORD='password'EMAIL_PORT = 587EMAIL_USE_TLS = True在settings.py文件中,我使用了EMAIL_HOST =’smtp.sendgrid.net』,
  • Rushmail:營銷郵件合適的主題怎麼寫?
    ,高質量的郵件主題非常重要,郵件主題是吸引用戶點擊郵件的根本,讓用戶更快知道郵件的目的和用途,使用戶有選擇性地的瀏覽郵件。編寫主題需要有以下幾點基本注意事項:1.主題簡潔概括:使用清晰、直接、簡明的語言去製作郵件主題2.站在用戶角度想標題:為用戶瀏覽郵件時,一般會有選擇性,會查看感興趣的郵件,對自己有沒有幫助,所以營銷郵件的主要能提供給用戶的東西作用體現出來,例如省時間、省錢、省力、省麻煩等等功效體現出來。
  • Rushmail:電子郵件群發的數據查詢如何達成
    就拿一些平臺來看,為什麼能夠做得那麼優秀,就是在一次一次用戶操作當中記錄了詳細數據,然後進行自我優化,這才能夠做得更加好。這樣的情況對於電子郵件來說同樣如此,那麼電子郵件群發的數據查詢如何達成?Rushmail有一個數據查詢的系統設置,裡面的模塊叫做統計報表。統計報表裡面有群發任務統計、扣點統計、發件人統計等等。相應的選項代表不同的功能,用戶只要打開了列表,馬上就會生成一個報表的形式,非常直觀看到各種數據。這裡數據完全根據實時發送情況生成,並且可以對多個任務進行比較,Rushmail這裡只需要一鍵生成,數據早已經記錄下來,讓操作人員可以輕鬆看到。
  • 你真的會發E-mail嗎?電子郵件禮儀都在這了
    1、E-mail正文要簡明扼要,行文通順。E-mail正文應簡明扼要的說清楚事情;如果具體內容確實很多,正文應只作摘要介紹,然後單獨寫個文件作為附件進行詳細描述。 最好不要讓人家拉滾動條才能看完你的郵件,千萬不要學唐僧。 2、注意E-mail的論述語氣。根據收件人與自己的熟絡程度、等級關係;郵件是對內還是對外性質的不同,選擇恰當的語氣進行論述,以免引起對方不適。 尊重對方,「請、謝謝」之類的語句要經常出現。
  • 網管入門:使用Winmail搭建企業郵件伺服器
    (2) 增加域名的郵件交換記錄(MX),目標主機可以填寫主機名(也可以填寫你的固定的 IP 地址)。例如現在有域名 svpc.net ,要添加一條 MX 記錄,則可以設置主機名為 mail.svpc.net.
  • 韓語E-mail郵件書寫方法
    隨著電腦的普及,網絡時代的到來,人們普遍使用電子郵件進行交流。
  • 使用郵件營銷平臺讓群發郵件變得簡單
    放在郵件群發這個具體事務上去看,這就是一個很好的關於工具選擇的例子。企業指派一個員工去做這件事情,單純去群發,那肯定忙不過來,而且效果也不會那麼好。如果使用了郵件群發平臺,那麼效率就會蹭蹭上升。現在問題來了,如何才能選到滿意的郵件群發平臺?做市場的都會知道郵件群發在整個市場營銷策略中的重要性。如果能夠選擇到一個好的郵件群發平臺,那麼就會顯得非常省力省心。
  • You've got a mail! 寫英文郵件是技術活
    你有沒有想過,收發E-mail佔用了你多少工作時間?留意過的人都知道那是一個不小的百分比,足見E-mail的重要性。寫英文郵件是個技術活,首要的任務就是搭起E-mail的「骨架」,然後根據具體情況具體加進「血和肉」。
  • Nylas Mail: 一個Linux的免費郵件客戶端
    就個人而言,我已經很長時間沒有使用 Thunderbird 了。我相信這不是一個第一次被問到的問題,但我相信這是一個把它解決掉的很好機會。這是因為日常用戶傾向於使用基於網絡的客戶端,例如 Gmail 或 Outlook 來滿足其郵件需求。而對於 Linux 上的經驗豐富的用戶而言,還有很多可供選擇的選項。
  • 西班牙語表達電子郵件直接用「e-mail」對嗎?
    ¿Es correcto usar la palabra e-mail para referirse a un mensaje
  • 企業門戶網站如何進行郵件群發
    現在有很多很多行業都在做郵件營銷,所以自然是會有一些經驗不夠豐富的企業,容易使自己的郵件被判定為垃圾郵件。使用了RUSHMAIL郵件群發平臺進行郵件營銷之後,是可以直接解決大部分郵件被系統拒收的問題。在此基礎上,如果企業門戶網站能夠對自己的郵件營銷進行進一步的優化,就能有效解決用戶舉報拉黑的問題,提高郵件營銷的效果。
  • 企業郵箱隨心溝通 263webmail助力移動辦公
    據易觀國際數據顯示,在倫敦奧運會舉辦期間,81.3%的用戶使用新聞客戶端來獲取奧運資訊。另據《2012年信息與通信促發展:實現移動通信潛能最大化》報告稱,2011年移動應用Apps下載量超300億。但外界呼聲頗高的電子郵件服務卻只有4%的受訪者表示會通過行動裝置使用。  「其實在真正的實踐層面上,企業用戶對於移動通信的需求逐步上升。」
  • 郵件伺服器軟體MDaemon使用技巧七則
    這時我們能夠看到公共文件夾中多了一個imap文件夾-mail achiver當用戶發送接收過郵件後,會產生相應的文件夾,用於基於入/出站郵件,基於收/發件人將郵件歸檔到不同的文件夾給a這個用戶賦予操作mail archive這個文件夾的權限。確保mail archive中的所有子文件夾都繼承了這個權限。權限的設置可以自動調節,並不一定要全部賦予。
  • Foxmail發送不了郵件要怎樣處理?
    中國郵箱網訊 7月5日消息,Foxmail不能正常發送郵件要怎樣處理?根據Foxmail客服中心的解答,我們或者可以從中獲得要領,自修成為一名Foxmail達人。一起來看一下:一、發送郵件時顯示錯誤信息:「解析伺服器IP位址失敗」。
  • ASP實例:實現郵件發送普通附件和嵌入附件
    網上很多關於JMail發送郵件的例子都沒有寫如何發附件,或者沒有寫清如何發內嵌的附件(比如把附件圖片嵌入到HTML信件裡面) 其實最關鍵的就是這句要注釋掉 'JMail.ContentType = "text/html" (為什麼要發內嵌的附件圖片?