作为一个前端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. 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册

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

  2. cli3解决 ie11语法错误 vue_基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册...

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

  3. Node.js 实现定时每天给女朋友发消息—nodemailer模块

    关注 程序员成长指北,回复"1" 加入我们一起学习,天天进步 作者: 加百利真胖 原文:https://juejin.cn/events/all 本文是以一个给女友发邮件的例子讲解 ...

  4. Node.js 实现定时每天发消息—nodemailer模块

    一.引言 我们的技术选型 就是nodejs,首先你得安装一个nodejs,然后我们主要使用一个模块Nodemailer. 下载链接和截图 二.nodemailer介绍 nodemailer是一个发送邮 ...

  5. nodemailer 附件_如何使用Nodemailer发送带有附件的电子邮件。 Node.js

    nodemailer 附件 In the previous article, "How to send emails using Nodemailer?", we discusse ...

  6. nodejs 编写发送邮件 nodemailer

    1 安装nodemailer插件 npm install nodemailer --save 2 获得自己邮箱IMAP/SMTP/POP3服务授权码 前往自己的邮箱,找到设置,找到如上三种服务,如果是 ...

  7. node 使用qq邮箱发送邮件

    一. 先注册一个邮箱,网易邮箱或qq邮箱皆可 注册后登录,修改SMTP设置 1.qq邮箱设置 qq邮箱在邮箱设置-账户中修改 点击开启后会出现账号安全验证,之后系统会给出授权码 2.网易邮箱设置 查看 ...

  8. 简单两步使用node发送qq邮件

    node发送邮件非常简单,这里只做qq的演示,你可以举一反三. 使用nodemailer包 let transporter = nodemailer.createTransport({// 使用qq发 ...

  9. 使用Nodejs发送邮件

    尝试用了Nodemailer来发送邮件,结果成功了,虽然是相对比较简单的,但还是记录一下吧. Nodemailer 是 Node.js 应用程序的一个模块,可以方便地发送电子邮件. 使用 # 初始化 ...

最新文章

  1. conda的导入导出
  2. edHat linux光盘引导,Red Hat Linux 9光盘启动安装过程
  3. Windows 10 版本 21H2 正式发布
  4. 深扒支点的梦起与破灭-千氪
  5. java架构师进阶之独孤九剑:数据结构以及书籍推荐
  6. jqgrid for asp.net 单页全选记录ID
  7. 2017.10.7 phi的反函数 失败总结
  8. 蓝桥杯2020国赛太原理工学子成绩大跃进
  9. 数学问题(一):进制转换
  10. XenCenter导出虚拟机
  11. 巴特沃斯低通滤波器 matlab,基于MATLAB做巴特沃斯低通滤波器..doc
  12. linux管理员下安装网易云,在Ubuntu 18.10系统中安装网易云音乐的方法
  13. 封神榜中的截教教徒是如何被杀的----开篇
  14. 【那些年做过的设计 · 纪念贴】UI设计中移动端和PC端之间具体有什么区别
  15. 网页/博客Hexo添加live2d游戏角色看板娘,简易添加,碧蓝航线等live2d新型游戏角色模型(moc3)
  16. android打败苹果,苹果iOS打败安卓的另一面:配件多于Android
  17. prometheus 监控概述
  18. 注册163VIP邮箱如何登陆?我邮件注册的163VIP邮箱不知道怎么登陆
  19. 3D地形编程——之GeoMipMap基础(1)
  20. 计算机阻止打印机驱动,设备 阻止用户在 Windows 10 (安装打印机) - Windows security | Microsoft Docs...

热门文章

  1. PHP怎样防止小数点精度不丢失,javascript小数精度丢失的完美解决方法
  2. linux java 生成证书_Java 制作证书(Windows 和Linux)
  3. 贪婪匹配和非贪婪匹配的区别
  4. 按职称分类统计人数access_建设工程监理从业人员超120万!2019年统计公报发布了!...
  5. js修改video的source_利用 javascript MediaSource 将 HTML video标签的src转成加载blob
  6. tampermonkey参数
  7. 判断windows进程是否存在
  8. MyBatis+Mysql实现从记录表中统计符合条件的人数
  9. C#中实现文件重命名的方式
  10. Winform中跨窗体设置ZedGraph的属性并刷新曲线图