通常來講,若是現實中你有這樣一種需求「假如你是褥羊毛的羊毛黨,你某日發現了一個app有一個活動,經過郵箱註冊帳號激活能夠領5元紅包,而偏偏你手上又有一批郵箱可用,那麼批量獲取郵箱中的激活連接去激活則是你一個很大工做量的內容」,如今問題已經出現了,那麼我在這裏給你們提供一些解決方案思路和結果。php
首先我想到的是經過一些爬蟲技術模擬登陸進入郵箱獲取郵件內容,我想通常人的解決思路也都是這樣的吧。可是這樣有一系列的難題,本事爬蟲也不會,網上找了一下案例可能是別人發的部分代碼,並且相互轉載的特別多(題外話,真正的一個需求解決方案我建議拆分到各個技術點去上網查是最優辦法,而不是一開始直接網上找),這裏這種思路我就不繼續說一下去了,我以前也在網上找了一些別人php些的模擬登陸郵箱,可能時間比較久了,如今根本無法用,故放棄。服務器
其次還有找到一種能夠知足需求的辦法,IMAP協議獲取郵件內容,這種方法前提郵箱設置過一些權限,好比:app
不過問題不大,通常郵箱協議默認有的,我這裏如今有一個栗子是,獲取hotmail郵箱的激活連接的,代碼以下工具
[HttpPost] public IActionResult GetLink([FromBody] JObject value) { try { string link = ""; string mail = value["mail"].Value<string>(); string pwd = value["pwd"].Value<string>(); IList<string> emailLst = new List<string>(); using (ImapClient client = new ImapClient("imap-mail.outlook.com", 993, mail, pwd, AuthMethod.Login, true)) { IEnumerable<uint> uids = client.Search(SearchCondition.All(), "junk"); // 也能夠使用經過其它條件進行檢索你的郵件 if (uids.Count() > 0) { System.Net.Mail.MailMessage msg = client.GetMessage(uids.Single(), true, "junk"); string body = msg.Body; Regex reg = new Regex(@"((https?|ftp|file))[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]", RegexOptions.IgnoreCase); var mc = reg.Match(body); if (mc.Success) { link = mc.Groups[0].ToString(); } } } return Ok(new { success = true, data = link }); } catch (Exception ex) { return Ok(new { success = false, data = ex.Message }); } }
看上面代碼,核心的方法就是 ImapClient,具體用法你們要看一下官方文檔,這裏提供一些解決思路並簡單結合栗子說明一下用法ui
ImapClient參數能夠看到,第一個是host名稱,第二個是端口號,
這裏不懂的人提供一個獲取這些信息的方法,下載一個foxmail客戶端,登陸郵箱,查看系統設置中服務器就能夠看到上面的信息,具體爲何這些東西有什麼用,查看imap協議,本人不求甚解並不瞭解這些東西具體緣由,spa
再回到參數介紹上面來,後面的參數都是固定的,郵箱名稱,密碼,最後面兩固定的這麼寫就能夠。code
IEnumerable<uint> uids = client.Search(SearchCondition.All(), "junk"); 獲取郵件uid
方法參數,第一個參數就是設定獲取郵件那一部分,我這裏直接寫的ALL,後面一個參數就是指定獲取那個文件的郵件,好比收信箱,發信箱,垃圾箱,草稿等待,我這裏獲取的垃圾箱(junk),說明一下,各類郵箱有些文件對應的字符串是不同的,好比hotmail的垃圾箱是junk,gamil的是spam,這裏是個坑,我也是摸石頭過河試出來的,因此特別說明一下。blog
client.GetMessage(uids.Single(), true, "junk");根據uid獲取郵件內容,差很少就這幾行代碼就能夠了,在實現需求之後回頭想一想若是最先用爬蟲來實現效果的話,估計代碼量複雜度要翻好幾倍。歸根結底,技術終究只是給需求提供最佳解決辦法的工具嘛,這篇文章是給你們一個思路參考和問題解決方案,若是你有自動獲取郵件這麼個需求的話,但願你必定要搜到這篇文章,