每个网站在做注册、登录的时候基本上都用了验证码功能,最近在学习nodeJs做一个博客网站,如果是用短信验证码的话,无疑成本高,想想做一个学习用的网站,还是选择邮件发送验证码把~~
首先,我们需要安装两个模块:
npm install nodemailer --save
npm install nodemailer-smtp-transport --save
当然你也可以不使用‘nodemailer-smtp-transport’,我这里使用了。
然后引入这两个模块:
const nodemailer = require('nodemailer')
const smtpTransport = require('nodemailer-smtp-transport')
接下来该配置了,下面贴上配置代码
const transport = nodemailer.createTransport(smtpTransport({
host: 'smtp.sina.com', // 服务
port: 465, // smtp端口
// secure: true,
secureConnection: true, // 使用 SSL
auth: {
user: 'shua1125@sina.com', // 发件地址
pass: '********' // 发件密码
}
}));
const randomFns=()=> {
return (1000 + Math.round(Math.random() * 10000 - 1000)) // 生成4位随机数
}
const regEmail=/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/ //验证邮箱正则
module.exports={
sendMailFn(req,res){
let EMAIL=req.body.emailVal
if (regEmail.test(EMAIL)){
let code=[randomFns()]
transport.sendMail({
from: 'shua1125@sina.com', // 发件邮箱
to: EMAIL, // 收件列表
subject: '欢迎注册8号空间', // 标题
// text:"hello",
html: '<p>你好!</p><p>感谢你注册8号空间。</p><p>你的验证码是:<strong style="color: #ff4e2a;">'+code+'</strong></p><p>***该验证码5分钟内有效***</p><a href="http://www.no8.space">www.no8.space</a>' // html 内容
}, function(error, data) {
if (error) {
console.error(error);
} else {
console.log('邮件发送成功,邮箱帐号:'+data.envelope.to);
}
transport.close(); // 如果没用,关闭连接池
})
console.log('发送的验证码:'+code)
res.send(code)
return
}else {
res.send('请检查邮箱!')
}
}
}
uploadPic1495856751513.png
配置好之后,在路由里面增加一个路由,
uploadPic1495857076106.png
当用户请求‘/getVerCode.do’接口时,发送验证码,
下面是请求验证码接口的处理函数:
uploadPic1495856968206.png
这样就能成功发送验证码啦。。。
各位多多指教!
网友评论