NodeJs原生庫接收郵件

流程圖

NodeJs 提供了SSL/TLS 這樣的安全連接協(xié)議庫,so 我們可以用這樣的協(xié)議與郵件服務(wù)器通訊。要寫完一個完整的收郵件的工具還是需要一定的時間,流程大致如上面的流程圖了。
那么什么是SSL?什么是TLS?

SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS與SSL在傳輸層對網(wǎng)絡(luò)連接進(jìn)行加密。

SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層: SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。 SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。

安全傳輸層協(xié)議(TLS)用于在兩個通信應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性。該協(xié)議由兩層組成: TLS 記錄協(xié)議(TLS Record)和 TLS 握手協(xié)議(TLS Handshake)。
TLS 的最大優(yōu)勢就在于:TLS 是獨立于應(yīng)用協(xié)議。高層協(xié)議可以透明地分布在 TLS 協(xié)議上面。然而,TLS 標(biāo)準(zhǔn)并沒有規(guī)定應(yīng)用程序如何在 TLS 上增加安全性;它把如何啟動 TLS 握手協(xié)議以及如何解釋交換的認(rèn)證證書的決定權(quán)留給協(xié)議的設(shè)計者和實施者來判斷。

可以看出為了郵件的安全性,采用SSL/TLS的通訊技術(shù)還是有必要的。廢話不說,看代碼:
首先引入庫 var tls = require('tls');
var options = {
host: 'pop.qq.com',
port: 995,
user: 'XXXXXXXXXXX@qq.com',
pass: 'XXXXXXXXXX'
}
var Socket = tls.connect(options.port, options.host, cb_connected);
//注冊事件-連接回調(diào)
Socket.on('connect', cb_connecting);
//注冊事件-服務(wù)器返回數(shù)據(jù)處理
Socket.on('data', cb_Server_DataBack);

上面的cb_XXXX都是回調(diào)函數(shù)。至于端口和服務(wù)器地址大家參看郵件服務(wù)提供商的幫助了,是不是很簡單,3行代碼。
剩余的就是用戶的操作,輸入命令,執(zhí)行,顯示操作結(jié)果即可。

利用socket將命令寫到服務(wù)端,like this : Socket.write("命令 \r\n"); 順帶一提命令以\r\n作為結(jié)束標(biāo)記一定要寫。

pop3協(xié)議的通信是一問一答的模式,想要做批量命令操作的小伙伴就要動點腦了。

有興趣的小伙伴可以自行完成剩余的代碼。

好吧,本來是要寫個android的收郵件客戶端的,腦子一熱,用了nodejs,細(xì)思極恐,還要寫頁面,還要寫一堆東西,畢竟我還不是全棧,android的APP有機會再分享。感謝閱讀,如有錯漏,還請留言賜教。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容