【nodejs實戰】實現一個經過導入excel表格發送定製郵件web小工具

本程序功能是上傳excel表格,而後編輯郵件模板,根據excel每條內容,給每一個人發送定製郵件。典型應用場景工資條,模板是相同的,可是每一個人都有個性化的內容。css

開發這個的原由是公司的hr小姐姐說之後工資條不經過郵件發送,而是紙質工資條,而後調戲下說是否是由於沒有自動發郵件的工具。網上一搜好像沒什麼好的工具,而後就嘗試着實現這個功能。前端

貼上github地址https://github.com/win5do/node-excel2emailvue

主要目標

  1. 上傳文件
  2. 讀取excel數據
  3. 根據郵件模板建立不一樣的郵件
  4. 發送郵件

github上一搜,找到node-xlsxnodemailer兩個庫,前者能夠幫我解析excel表格,後者則能夠經過smtp服務器發送郵件。下面咱們要作的就是實現一個簡單的郵箱模板,編寫一個易用的前端頁面給用戶,那上面那個流程串聯起來,最後把發送郵件後的狀態反饋給用戶。node

技術選型

  • 後端: node express session pug
  • 前端: jquery materialize-css(css框架) webpack
  • 通信: ajax socket.io
  • 工具: node-xlsx nodemailer umeditor(富文本編輯器) multer(文件上傳)

這個程序功能都放在一個頁面裏,也就沒用vue、react等框架,直接pug + jquery + materialize-css搞定,主要是平時工做都是vue前端端分離,想體驗一下傳統的玩法。materialize-css是一個和bootstrap相似的css框架,風格是meterial-design風格,很是漂亮。react

沒有用的數據庫,經過session區分用戶,數據直接放到內存裏,用後即焚。由於須要把每一個郵件的發送結果即時反饋給前端,這裏用到socket.io,經過tcp鏈接讓服務器給客戶端發送消息。查了一些資料,使用ajax輪詢或Server-Sent Events也能夠實現,不過仍是websocket更優雅,對多用戶支持更好。jquery

前端資源這塊,js模塊 scss式樣仍是經過webpack處理,原本像復古用用gulp,但一想到要寫一大堆task,仍是webpack的loader方便,配置的也比較熟了,經過watch就能即時編譯。webpack

富文本編輯器挑了半天,github上星最多的quill,可是對中文支持不是很好,還有不少一大堆bug或者配置起來超複雜,仍是選用了百度的umeditor,功能比較全,沒有明顯bug,可是不支持umd,囧。git

效果預覽

圖片描述

圖片描述

圖片描述

最後

nodejs生態的各類輪子齊全,使用簡單,把幾個輪子組裝起來功能知足需求,全後端無縫切換,開發效率槓槓的,這就是nodejs的優點所在。僅以此文記錄項目實現的過程。把一個想法實現,仍是頗有成就感的。github

參考文獻

編寫一個簡單的JavaScript模板引擎
用node.js實現HTML5原生的comet(長鏈接)
學習 NodeJS 第八天:Socket 通信web

相關文章
相關標籤/搜索