nodemailer实现node发送邮件
2016-04-08 16:48
561 查看
作为一个前端er,利用node独立做一些全栈小项目,是很有效率和必要的。
需要:
做一个活动报名页面,用户填好的表单需要被工作人员收到,一想到把数据存数据库,还需要给工作人员写一个管理页面就觉得很麻烦。
把表单数据通过邮件方式发送到相关人邮箱,很讨巧,很节约开发成本,就这样做。
核心模块:nodemailer
看看package.json:
devDependencies里全是gulp模块
引入body-parser模块可以通过req.body.xx获取到表单的数据
常规使用express
nodemailer用来支持发送邮件
swig是node的一个模板引擎
[b]使用nodemailer:[/b]
1.这里用到的是QQ邮箱,配置好地址和自己的账户名和密码
2.from和to设置邮件发送者和收件者的邮箱地址,
subject邮件title
html邮件内容
smtpTransport.sendMail执行发送,这里的res是express router的响应参数,这里只贴主要代码,详细代码最后发github地址
其实很简单,核心代码就是这些~
绑定路由:
前端当然也有一些事情要做,写好页面,验证表单,提交表单。
当前只有两个页面,报名页面和报名成功页面。
页面内容不再叙述,详情看下面git地址
需要注意的问题:
用不同的邮箱发送邮件,需要找到相应官方api地址
邮件内容的html是有一定规则的,每个三方邮箱的规则都不同,可以查阅相关通用资料
https://github.com/zimv/nodemailer-demo
需要:
做一个活动报名页面,用户填好的表单需要被工作人员收到,一想到把数据存数据库,还需要给工作人员写一个管理页面就觉得很麻烦。
把表单数据通过邮件方式发送到相关人邮箱,很讨巧,很节约开发成本,就这样做。
核心模块: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的一个模板引擎
[b]使用nodemailer:[/b]
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
相关文章推荐
- inode简单理解
- node.js安装方法总结
- Reverse Nodes in k-Group(与leetcode不同)
- lightoj 1257 - Farthest Nodes in a Tree (II) 树直径
- nodejs错误 : request entity too large
- [置顶] node-webkit支持sqlite
- 开源虚拟化解决方案ovirt实验(2.ovirt-node安装)
- kafka创建topic报错:KeeperException$NoNodeException: KeeperErrorCode = NoNode for /brokers/ids
- 几行代码搞定nodejs中的回调坑
- [置顶] Node 升级工具n 大坑
- 'nodeName' 为空或不是对象的原因
- LeetCode *** 24. Swap Nodes in Pairs
- Dom4j 存在命名空间导致document.selectNodes() 无返回结果
- 在NodeJS中使用流程控制工具Async
- swap nodes in pairs
- LeetCodet题解--19. Remove Nth Node From End of List(删除链表的倒数第n个元素)
- FILE 结构体的定义,inode ,软链接和硬链接的理解
- #leetcode#237. Delete Node in a Linked List
- [置顶] windows上node-webkit安装sqlite、socket的那些坑
- 简单理解 unix (liunx)inode