1. 程式人生 > >利用electron-vue技術實現一個郵箱客戶端應用的專案總結

利用electron-vue技術實現一個郵箱客戶端應用的專案總結

1.electron-vue是利用Chromium瀏覽器、vue-cli腳手架和nodejs來實現跨平臺的桌面應用程式     使用electron-packager或electron-builder打包應用程式,electron-packager打包方式比較簡單,想為哪個平臺打包,     執行相應命令即可;electron-builder,自動化部署,持續整合,只要監測github上繫結的程式碼倉庫發生了變化,即可打包釋出。

2.讀取郵件的方式

    smtp協議:是一種基於文字的電子郵件傳輸協議,只能用於郵件伺服器之間交換郵件。     pop3協議:允許電子郵件客戶端下載伺服器上的郵件,但不是一個同步的操作,它只是下載了伺服器郵件的一個副本,因此伺服器上郵件有其他操作時,不會同步到客戶端。     imap協議:與pop3協議類似,都允許客戶端來下載,但它是一個同步的過程,伺服器端有了更改,同時客戶端也會有相應的改變。    smtp用來發送郵件,pop3和imap都用來接收郵件

3.接收郵件 --- node-imap是一個 node.js版本的IMAP客戶端模組

4.解析郵件的編碼方式:

   (1)、iconv-lite實現編碼的轉換,因為node只支援utf-8,沒有提供原生轉碼的方式,故必須利用該模組,            轉換為GBK編碼  (2)、content-type的分類:        i、text,主要有text/html和text/plain,內容需要用Content-Transfer-Encoding解碼,常見傳輸編碼為base64和quoted-printable        ii、multipart,又分為mixed、alternative和related。              mixed是有附件的型別              alternative是純文字和超文字同時存在的型別              related是資源內嵌型別,如內容為html,但html裡有圖片,把圖片提取出來以附件形式傳送

          因為multipart這種形式比較複雜,因此要利用boundary分割符,將郵件體分割成不同段來進行解析,boundary分為父段和子段,父段一般出現0次或1次,出現在末尾,每個子段中也有content-type和boundary,需要在進行解析,如果遇到i,iii裡面的情況可直接解析,如果遇到ii中的情況,再按ii中的步驟進行解析         iii、image、application,一般是出現在附件中的格式     (3)、quoted-printable可譯為"可列印字元引用編碼",其編碼方法為:           i、任何一個8位的位元組值都可以編碼為3個字元:=後跟隨兩個十六進位制數字(0-9或A-F)           ii、所有可列印ASCII字元(十進位制範圍為33到126)都可用ASCII字元編碼來直接表示,但'='只能表示為'=3D'           iii、tab與空格符的十進位制為9和32,如果不出現在行尾則可以用其ASCII編碼直接表示,如果這兩個字元出現在行尾,則必須按照QP的編碼要求,表示為'=09'和'=20'           iv、QP的編碼資料每行長度不能超過76個字元,因此在每行末尾加上一個'='表示結束      (4)、base64編碼方式:          i、base64利用64個可列印字元來表示二進位制資料(A-Za-z0-9+/)          ii、將索引轉換為對應的二進位制資料需要6個bit,而ASCII碼需要8個bit來表示,但是4*6個bit可以儲存3*8個bit,將其轉換為對應的6個bit          iii、在6個bit的高位補0,變成8個bit,轉換成對應的base64字元          iv、如果不是對應的倍數時,就用0補齊,變成8個bit,表示成對應的base64編碼,如果8個bit都為0則表示為=

5.傳送郵件 --- nodemailer

6.注意事項

  在登入時必須在郵箱中開啟pop3或imap服務,使用授權碼登入,而不是使用你的郵箱密碼登入

  使用qq郵箱時直接使用授權碼登入即可,但是用網易郵箱有限制。使用網易郵箱登入第三方客戶端時,由於網易郵箱的限制,無法登入第三方客戶端,只能使用如下網址:http://config.mail.163.com/settings/imap/[email protected],且使用該網址時要先先註冊一個帶字母的163郵箱,不能使用手機號註冊的163郵箱,否則該網站對這個郵箱不識別