教你node.js 模拟自动发送邮件验证码

简介: 我们在开发网站时,发送验证码的功能是必定会遇到的,但发送短信验证码是需要付费的,那么邮箱验证码就是一个白嫖的好办法,今天就来教大家用node如何自动发送邮箱验证码。接下来跟着我的步骤走,就能轻松完成邮箱的自动发送

QQ邮箱设置


先按照以下图中的六个步骤设置一下QQ邮箱


be29de78cd9c0f47d89ae803f58eb103.png


29983d670b5747ae14c69eedbca8dfcf.png


54a9cee0257231a87386d78262b86d08.png


0dcbeef637c1892c02ad4d645676a419.png


至此就完成了我们的QQ邮箱设置,接下来再来看下一个步骤


安装nodemailer


先用npm安装一下nodemailer,即:npm i -S nodemailer


配置信息


接下来就要导入 nodemailer 这个包,然后写一下配置信息,代码如下:


    //1. 导入nodemailerconst nodemailer = require('nodemailer')
    //2. 创建运输对象let transporter = nodemailer.createTransport({    host: 'smtp.qq.com',    secure: true,    auth: {        user: '5641132547@qq.com',//输入你开启SMTP服务的QQ邮箱        pass: 'oxpbfzjtnurbjhei' //输入我们刚才获得的那串字符    }})
    //3.配置发送邮件的信息let mailOptions = {    from: '5641132547@qq.com', // 发送者,也就是你的QQ邮箱    to: '12938203121@qq.com', // 接受者邮箱,可以同时发送多个,以逗号隔开    subject: '测试发送邮件', // 邮件标题    html: `<p>这是我的测试邮件</p><p>哈哈哈,收到请回复</p>      `      //邮件内容,以html的形式输入,在邮件中会自动解析显示};
    //4.发送邮件transporter.sendMail(mailOptions, function(err, data){  //回调函数,用于判断邮件是否发送成功  ...})


    综合使用


    在写完配置信息以后,我们的模拟发送邮件的步骤就大体完成了,但我们会发现,通常发送邮件是作为一个工具,目标邮箱,也就是我们要发送过去的邮箱,通常是会变化的,那我们就需要把代码封装一下,接下来放一个完整的代码。


      /*  文件名:sendEmail.js    */
      const nodemailer = require('nodemailer')
      let transporter = nodemailer.createTransport({    host: 'smtp.qq.com',    secure: true,    auth: {        user: '5641132547@qq.com',        pass: 'asdasfsfwqqw'     }});
      //导出模块,供别的文件使用module.exports = async function fn(email, code){    let status = null    await new Promise((resolve, reject) => {        transporter.sendMail({            from: '5641132547@qq.com',            to: email,             subject: '网站账户注册验证码',            html: `            <p>网站账户注册验证码:</p>        <span style="font-size: 18px; color: red">` + code + `</span>`
              }, function (err, info) {            if (err) {                status = 0                reject()            } else {                status = 1                resolve()            }        });    })    return status
      }


      封装好发送邮件模块以后,我们可以在别的 js 文件里对其进行使用了,来看以下代码


        /*  文件名  main.js  */
        //导入我们sendEmail.js文件中导出的东西const sendEmail = require('./sendEmail.js')
        //此时sendEmail是一个函数,可传参数有 email, code , 执行完会返回一个status, 用于判断是否发送成功const result = sendEmail('190380192@qq.com', 568712)if(result === 0) {  console.log('邮件发送失败')}else if(result === 1) {  console.log('邮件发送成功')}


        最后我们就会收到这样一封邮件啦


        b5dc467b6e6b3631b27c24dc8845fca7.png


        补充


        对于上一部分对整个代码的封装当中, 可能大家对 async 和 await 这两个关键词有点陌生,这里我就给大家简单讲解一下吧,如果想深入了解的,可以去查阅ES7的资料进行了解。


        首先, 我们的发送邮箱是属于异步操作的。async 是 用于表示函数中存在异步操作, 而 await 后面必须给嗯一个Promise , 则在这个函数内,必须要等到 await 后面的 Promise 内的函数执行完毕以后,才会继续往下执行。


        不懂的小伙伴也没有关系,可以直接复制我的代码拿去使用~ node.js模拟发送验证码的教程就讲解到这啦,希望对大家有所帮助。

        相关文章
        |
        7月前
        |
        前端开发 JavaScript
        验证码(原生js加canvas绘图)
        验证码(原生js加canvas绘图)
        38 0
        |
        7月前
        |
        小程序 前端开发 JavaScript
        node使用nodemailer在本地可以正常发送邮件,放服务器后无法发送报错
        node使用nodemailer在本地可以正常发送邮件,放服务器后无法发送报错
        107 0
        node使用nodemailer发送邮件
        node使用nodemailer发送邮件
        |
        JavaScript 前端开发
        原生JS实现移动端短信验证码功能
        原生JS实现移动端短信验证码功能
        239 0
        原生JS实现移动端短信验证码功能
        |
        3月前
        |
        存储 JSON 前端开发
        node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
        本文介绍了在Node.js中使用token实现前端验证码和登录功能的详细流程,包括生成验证码、账号密码验证以及token验证和过期处理。
        52 0
        node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
        |
        4月前
        |
        资源调度 JavaScript API
        nest.js + sms 实现短信验证码登录
        本文介绍了在Nest.js框架中集成短信验证码登录的实现方案,详细阐述了使用阿里云短信服务的配置流程、资质申请、短信模板设置,并提供了API调用示例和工程代码的运行步骤。
        nest.js + sms 实现短信验证码登录
        |
        4月前
        |
        JavaScript
        Nest.js 实战 (七):如何生成 SVG 图形验证码
        这篇文章介绍了使用NestJS实现Session验证的图形验证码功能的具体步骤。首先,通过powershell代码安装依赖pnpmaddsvg-captcha。然后,在控制器中使用TypeScript代码引入相关依赖,创建一个图形验证码的接口,当请求该接口时,返回一张随机图片验证码。最后,进行了效果演示。
        Nest.js 实战 (七):如何生成 SVG 图形验证码
        |
        4月前
        |
        JavaScript 前端开发
        js随机验证码
        js随机验证码
        41 2
        |
        5月前
        【node】图片验证码(svg-captcha)
        【node】图片验证码(svg-captcha)
        263 0
        |
        7月前
        |
        前端开发 JavaScript
        验证码(原生js加canvas绘图)
        验证码(原生js加canvas绘图)
        42 0