首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
Ubuntu环境使用TPC-DS工具生成测试数据
2
cookie机制及其原理
3
网络测试,带宽测试,流量测试
4
使Edge浏览器打开仅支持IE兼容模式的网站
5
【Linux】挂载硬盘、镜像文件、rpm软件包管理器、yum软件包管理器、软件安装jdk、tomcat、mysql
6
【Spring Boot 项目创建】002-代码关联 Git 远程仓库
7
用ChatGPT生成测试数据
8
手机APP测试(测试点、测试流程、功能测试)
9
web前端好帮手 - Jest单元测试工具
10
用ChatGPT生成测试数据
11
Redis 精简笔记
12
一句话就能提Bug,这个自动提交Bug Skill 太好用了
13
从0到1做出可复用的 iOS 自动化测试 Skill,附真机演示效果
14
大厂测开面试都在问AI,这个实战项目直接帮你准备好了
15
OpenClaw 拿什么吃掉测试岗?
16
一篇理清Prompt,Skill,MCP之间的区别
17
AI 测试必备:推荐一款能让自动化失败脚本「自己修好」的 AI skill!
18
【Selenium 自学系列】(一)看源码分析交互原理
19
什么是CI/CD
20
这到底是前端还是后端Bug
21
详解接口测试(2)- HTTP接口用例设计与测试方法(拿B站练手)
22
比羊了个羊还火的ChatGPT,玩法全攻略讲解
23
爱心代码文字升级版
24
自动打包、装机、生成用例、真机回归,AI 测试流水线终于跑通了
25
AI生成注册用户测试用例
26
AI驱动的测试报告分析:从数据中挖掘测试洞察
27
WEB功能测试说明
28
APP功能测试要点
29
不输ChatGPT,kimi秒画流程图
30
聊天功能如何测试?
31
订单支付功能测试
32
app功能测试--需要测试哪些要点
33
【软件测试】使用QTP进行功能测试
34
TestZeus Hercules:功能测试写 Gherkin,让 AI Agent 去跑冒烟流程
35
非功能需求的测试
36
【功能篇】如何测试报表?
37
VFP AI 插件(ver:20251007)测试报告
38
VFP AI 插件使用指南(三)
39
「 支付功能 」的测试思路
40
研发、测试提效攻略:利用Apipost AI 6 大核心功能实现接口测试全流程
41
功能测试之app测试要点提取与分析
42
网站测试中短信发送功能测试点
43
常用功能的测试用例
44
20行代码,用Python实现异常测试用例
45
新梦想干货——软件测试中的43个功能测试点(下)
46
《打造你的 AI 知识库:用 Skill 实现项目文档的自动生成与维护》
47
Apifox和Apipost:2025 API工具巅峰对决
48
接口测试--apipost接口断言详解
49
ApiPost自动化测试基础之:如何使用测试校验(测试用例)?
50
教你用 Node.js 模拟自动发送邮件验证码
清单首页测试文章详情

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

我们在开发网站时,发送验证码的功能是必定会遇到的,但发送短信验证码是需要付费的,那么邮箱验证码就是一个白嫖的好办法,今天就来教大家用node如何自动发送邮箱验证码。

接下来跟着我的步骤走,就能轻松完成邮箱的自动发送

QQ邮箱设置

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

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

安装nodemailer

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

配置信息

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

代码语言:javascript
代码运行次数:0
复制
//1. 导入nodemailer
const 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){
  //回调函数,用于判断邮件是否发送成功
  ...
})

综合使用

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

代码语言:javascript
代码运行次数:0
复制
/*  文件名: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 文件里对其进行使用了,来看以下代码

代码语言:javascript
代码运行次数:0
复制
/*  文件名  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('邮件发送成功')
}

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

补充

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

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

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

举报
领券