作为一个前端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. C++ 非阻塞套接字的使用 (3)

    异步非阻塞套接字避免了死循环的接收问题,但是软件用起来体验还是很差.究其原因,软件在指令的发送.接收上, 采取了一种不合理的方式:在指令的发送后,立刻调用接收函数,等待回令. 若是采用同步阻塞套接字, ...

  2. LINUX下常用SHELL指令

    Linux Shell常用shell命令 一.文件.目录操作命令 1.ls命令 功能:显示文件和目录的信息 ls 以默认方式显示当前目录文件列表 ls -a 显示所有文件包括隐藏文件 ls -l 显示 ...

  3. 重拾java之路之webservice

         Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性.你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web servi ...

  4. python if

    根据用户从控制如输入数据,使用if语句实现用户登录功能 代码如下: name = "zy"password = "123"_name = input(" ...

  5. html中使用js实现内容过长时部分

    有时数据内容太长时我们并不希望其全部显示出来,因为这样可能会导致用于显示这些内容的标签被撑开影响美观. 这时就希望能够实现默认只显示部分内容,在鼠标放上去的时候再将全部的内容显示出来. 这里提供一个简 ...

  6. Mac OS X 常用快捷键

       

  7. MyEclipse 常用操作

    1.使用JREBEL插件包实现myeclipse修改类文件后无须重启 在Myeclipse中的window-preferences(搜索tomcat)->然后到tomcatx.x下的-jdk中配 ...

  8. 重量级Orchard模块发布 - 模块生成工具RaisingStudio.ModuleGenerator

    可以从这里下载安装(http://gallery.orchardproject.net/List/Modules/Orchard.Module.RaisingStudio.ModuleGenerato ...

  9. 使用ASP.NET Web API 2创建OData v4 终结点

    开放数据协议(Open Data Protocol[简称OData])是用于Web的数据访问协议.OData提供了一种对数据集进行CRUD操作(Create,Read,Update,Delete)的统 ...

  10. 【腾讯Bugly干货分享】揭秘:微信是如何用libco支撑8亿用户的

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/58203cfcd149ba305c5ccf85 作者:Leiffy 导语 lib ...