教你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模拟发送验证码的教程就讲解到这啦,希望对大家有所帮助。

        相关文章
        |
        JavaScript
        Node.js使用Nodemailer发送邮件
        Node.js使用Nodemailer发送邮件
        322 0
        Node.js使用Nodemailer发送邮件
        |
        JavaScript
        Node.js(三)发送邮件模块(第三方模块)
        Node.js(三)发送邮件模块(第三方模块)
        86 0
        |
        JavaScript 安全 网络安全
        如何使用nodejs自动发送邮件?
        之前用Nodejs做了很多服务端模块, 最近抽空复盘一下, 接下来笔者将介绍如何使用Nodejs来自动向用户发送邮件. 笔者将详细介绍自动发送邮箱的实现方案, 以及通过一个实际的案例来带大家掌握使用nodejs自动发送邮件, 最后会介绍一些实际的应用场景, 来加深对该方案的理解, 达到学以致用的目的.
        670 0
        |
        JavaScript Linux 前端开发
        关于nodejs的几个干货(读中文文件编码问题/发送邮件/定时任务)
        关于nodejs读取中文文件真是折腾了不少时间,网上各种方案,最后没有一个适用我,好在解决了。 下面的三个知识点都是从项目中抽出的,要单独运行脚本的话需要用全局模式来安装模块,比如安装中文转换模块(后续其它的也需要这么做): npm install -g iconv-lite  npm i...
        1712 0
        |
        2月前
        |
        JavaScript
        Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
        Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
        27 0
        |
        2月前
        |
        消息中间件 Web App开发 JavaScript
        Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
        Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
        77 0
        |
        4天前
        |
        JavaScript 前端开发 测试技术
        学习JavaScript
        【4月更文挑战第23天】学习JavaScript
        11 1
        |
        11天前
        |
        JavaScript 前端开发 应用服务中间件
        node.js之第一天学习
        node.js之第一天学习
        |
        1月前
        |
        运维 JavaScript 前端开发
        发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
        发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
        |
        1月前
        |
        JavaScript
        Vue.js学习详细课程系列--共32节(4 / 6)
        Vue.js学习详细课程系列--共32节(4 / 6)
        35 0