作为一个前端er,利用node独立做一些全栈小项目,是很有效率和必要的。

需要:

  做一个活动报名页面,用户填好的表单需要被工作人员收到,一想到把数据存数据库,还需要给工作人员写一个管理页面就觉得很麻烦。

  把表单数据通过邮件方式发送到相关人邮箱,很讨巧,很节约开发成本,就这样做。

核心模块:nodemailer

看看package.json:

{
"devDependencies": {
"gulp": "^3.8.11",
"gulp-imagemin": "^2.2.1",
"gulp-less": "^3.0.3",
"gulp-notify": "^2.2.0",
"gulp-uglify": "^1.2.0",
"gulp-watch": "^4.2.4",
"require-dir": "^0.3.0"
},
"dependencies": {
"body-parser": "^1.15.0",
"express": "^4.13.4",
"nodemailer": "^2.3.0",
"swig": "^1.4.2"
}
}
  • devDependencies里全是gulp模块
  • 引入body-parser模块可以通过req.body.xx获取到表单的数据
  • 常规使用express
  • nodemailer用来支持发送邮件
  • swig是node的一个模板引擎

使用nodemailer:

1.这里用到的是QQ邮箱,配置好地址和自己的账户名和密码

var nodemailer = require("nodemailer");
var smtpTransport = nodemailer.createTransport({
host: 'smtp.exmail.qq.com',
port: 465,
secure: true, // use SSL
auth: {
user: 'yourqq@qq.com',
pass: 'password'
}
});

2.from和to设置邮件发送者和收件者的邮箱地址,

subject邮件title

html邮件内容

smtpTransport.sendMail执行发送,这里的res是express router的响应参数,这里只贴主要代码,详细代码最后发github地址

var mailOptions = {
  from: "yourqq@qq.com",
  to: "toqq@qq.com",
  subject: "node邮件",
  html: "<b>姓名: </b>"+name+"<br>"+
  "<b>性别: </b>" + sex + "<br>"+
  "<b>电话: </b>" + phone + "<br>"+
  "<b>邮箱: </b>" + email + "<br>"+
  "<b>QQ: </b>" + qq + "<br>"+
  "<b>年龄: </b>" + age + "<br>"+
  "<b>联系地址: </b><br><div style='margin-left:20px;margin-top:20px'>" + address + "</div><br>"+
  "<b>所在院校及专业: </b><br><div style='margin-left:20px;margin-top:20px'>" + school + "</div><br>"+
  "<b>学校地址: </b><br><div style='margin-left:20px;margin-top:20px'>" + schooladdress + "</div><br>"+
  "<b>跟我们说说你的大学吧: </b><br><div style='margin-left:20px;margin-top:20px'>" + des + "</div><br>"+
  "<b>个人书单及评价: </b><br><div style='margin-left:20px;margin-top:20px'>" + book + "</div><br>"
} smtpTransport.sendMail(mailOptions, function(err, resp){
  if(err){
    res.send({
      code: 201,
      msg: "报名失败,请重试"
    })
  }else{
    res.send({
      code: 200,
      msg: "报名成功"
    })
  }
  smtpTransport.close();//关闭连接池
});

其实很简单,核心代码就是这些~

绑定路由:

app.get('/', function(req, res) {
  res.render('index');
})
app.get('/success', function(req, res) {
  res.render('success');
}) app.post('/join', function(req, res){
  
  var name = req.body.name,
  sex = req.body.sex,
  phone = req.body.phone,
  email = req.body.email,
  qq = req.body.qq,
  age = req.body.age,
  address = req.body.address,
  school = req.body.school,
  schooladdress = req.body.schooladdress,
  des = req.body.des,
  book = req.body.book;
  //next do send
})

前端当然也有一些事情要做,写好页面,验证表单,提交表单。
当前只有两个页面,报名页面和报名成功页面。
页面内容不再叙述,详情看下面git地址

需要注意的问题:

  • 用不同的邮箱发送邮件,需要找到相应官方api地址
  • 邮件内容的html是有一定规则的,每个三方邮箱的规则都不同,可以查阅相关通用资料

https://github.com/zimv/nodemailer-demo


  

												

nodemailer实现node发送邮件的更多相关文章

  1. node 发送邮件demo (QQ邮箱)

    nodemailer是nodejs中的邮件发送模块,本文使用的版本为2.5.0 --下载模块 npm install nodemailer npm下载模块后,在项目中引入就可以使用: var node ...

  2. 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册

    项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...

  3. 转:Node.js邮件发送组件- Nodemailer 1.0发布

    原文来自于http://www.infoq.com/cn/news/2014/07/node.js-nodemailer1.0-publish Nodemailer是一个简单易用的Node.js邮件发 ...

  4. Nodejs之发送邮件nodemailer

    nodejs邮件模块nodemailer的使用说明 1.介绍 nodemailer是node的一个发送邮件的组件,其功能相当强大,普通邮件,传送附件,邮件加密等等都能实现,而且操作也十分方便. nod ...

  5. 使用node自动刷房源并发送可入住房源到邮箱

    因为住的地方离公司太远,每天上下班都要坐很久的班车,所以最近想搬到公司旁边的皖水公寓住.去问了一下公寓的客服,客服说房源现在没有了,只能等到别人退房,才能在网站上申请到. 如果纯靠手动F5刷新浏览器, ...

  6. Node.js发送电子邮件

    电子邮件作为最广泛使用的一种网络服务和我们的工作学习生活已经密不可分.接受信用卡的账单,注册网站,找回密码等等都需要用到它.今天在就来学习下如何在node下来发送邮件,为当前做的项目提供邮箱校验的功能 ...

  7. nodeJs的nodemailer发邮件报错hostname/IP doesn't match certificate's altnames怎么解决?

    今天在开发过程中碰到一个问题,即使用node发送邮件时报错hostname/IP doesn't match certificate's altnames,在网上查了解决办法有两个, 加rejectU ...

  8. vue koa2 mongodb 从零开始做个人博客(二) 登录注册功能后端部分

    0.效果演示 插入视频插不进来,就很烦.可以出门右拐去优酷看下(点我!). 1.后端搭建 1.1项目结构 首先看一下后端的server目录 挨个解释一下 首先dbs文件夹顾名思义,操作数据库的,mod ...

  9. babeljs源码

    babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...

随机推荐

  1. PHP项目感悟 -- 从CI框架来看iOS的MVC

    其实这几天一直都想找时间把这个感悟整理出来,也是这一段一直思考的问题,因为这一段参加一个PHP后台项目的开发,框架使用的是CI,随着项目的进展,对于CI接触的也越多,但是由于理解的可能并不深刻,我也只 ...

  2. CentOS7使用阿里云镜像安装Mongodb

    一.概述 近日要在新的CentOS系统上安装MongoDB,某度结果后直接从Mongo官网直接获得3.2版本的下载链接,结果在下载时发觉速度慢的可怜.迫于无奈,只能找国内的镜像下载.切换国内的安装源后 ...

  3. 调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令

    调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (二)使用Windbg调试SQLSERVER ...

  4. diff详解,读懂diff结果

    1.概述 本文将要讨论的是diff命令,diff用来比较两个文件.当然文件比较的工具很多,windows系统下面就有不错的工具可以使用,例如常用的Beyond Compare,WinMerge都是图形 ...

  5. 分享我开发的网络电话Android手机APP正式版,图文详解及下载

    分享我开发的网络电话Android手机APP正式版,图文详解及下载 分享我开发的网络电话Android手机APP正式版 实时语音通讯,可广域网实时通讯,音质清晰流畅! 安装之后的运行效果: 第一次安装 ...

  6. MQTT V3.1----flow

    该文章转自:聂永的博客(http://www.blogjava.net/yongboy/archive/2014/02/15/409893.html) 网络故障 在任何网络环境下,都会出现一方连接失败 ...

  7. Zookeeper--Zookeeper是什么

    Google的三篇论文影响了很多很多人,也影响了很多很多系统.这三篇论文一直是分布式领域传阅的经典.根据MapReduce,于是我们有了Hadoop:根据GFS,于是我们有了HDFS:根据BigTab ...

  8. TW2015技术雷达中文版发布

    今天thoughtworks 2015新版技术雷达pdf发布了,你可以从这里下载http://engage.thoughtworks.com/HQ0000Q0QOf5pE70nbD00GP,在这里你可 ...

  9. Linux date命令

    命令概述 date命令可以用来设置和显示系统当前时间,特别是在有一些Shell命令里面用到date命令来做日期的不同的显示,所以该命令也是非常需要掌握的一个命令. 语法 date [OPTION].. ...

  10. python 对象

    python 对象 在python中,对象就是为C中的结构体在堆上申请的一块内存,一般来说,对象是不能被静态初始化的,并且不能再栈空间上生存.本文主要对Python的基本数据类型做简单的介绍. PyO ...