【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

相关文章
相关标签/搜索