使用nodeJs‘nodemailer’模块发送邮件,nodeJ

2018-04-11  本文已影响353人  eks

每个网站在做注册、登录的时候基本上都用了验证码功能,最近在学习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

这样就能成功发送验证码啦。。。

各位多多指教!

上一篇 下一篇

猜你喜欢

热点阅读