博客
关于我
nodemailer实现node发送邮件
阅读量:402 次
发布时间:2019-03-05

本文共 2327 字,大约阅读时间需要 7 分钟。

作为一个前端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:     "姓名:  "+name+"
"+  "性别: " + sex + "
"+  "电话: " + phone + "
"+  "邮箱: " + email + "
"+  "QQ: " + qq + "
"+  "年龄: " + age + "
"+  "联系地址:
" + address + "
"+  "所在院校及专业:
" + school + "
"+  "学校地址:
" + schooladdress + "
"+  "跟我们说说你的大学吧:
" + des + "
"+  "个人书单及评价:
" + book + "
"}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是有一定规则的,每个三方邮箱的规则都不同,可以查阅相关通用资料

  

转载地址:http://yhxzz.baihongyu.com/

你可能感兴趣的文章
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>