node.js 模拟自动发送邮件验证码
引言
先点赞,再看博客,顺手可以点个关注。
微信公众号搜索【Lpyexplore的编程小屋】,关注我,带你在python爬虫的过程中学习前端
我们在开发网站时,发送验证码的功能是必定会遇到的,但发送短信验证码是需要付费的,那么邮箱验证码就是一个白嫖的好办法,今天就来教大家用node如何自动发送邮箱验证码。
正文
接下来跟着我的步骤走,就能轻松完成邮箱的自动发送
1. QQ邮箱设置




2. 安装nodemailer
npm i -S nodemailer
3.配置信息
//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){
//回调函数,用于判断邮件是否发送成功
...
})
4.综合
但我们会发现,通常发送邮件是作为一个工具,目标邮箱,也就是我们要发送过去的邮箱,通常是会变化的,那我们就需要把代码封装一下,接下来放一个完整的代码。
/* 文件名: 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
}
/* 文件名 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('邮件发送成功')
}
最后我们就会收到这样一封邮件啦

5.讲解
对于上一部分对整个代码的封装当中, 可能大家对 async 和 await 这两个关键词有点陌生,这里我就给大家简单讲解一下吧,如果想深入了解的,可以去查阅ES7的资料进行了解。
首先, 我们的发送邮箱是属于异步操作的。 async 是 用于表示函数中存在异步操作, 而 await 后面必须给嗯一个Promise , 则在这个函数内,必须要等到 await 后面的 Promise 内的函数执行完毕以后,才会继续往下执行。
结束语
好啦,node.js模拟发送验证码的教程就讲解到这啦,希望对大家有所帮助。
node.js 模拟自动发送邮件验证码的更多相关文章
- node.js模拟qq漂流瓶
(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) node.js模拟简易漂流瓶,页面有扔瓶子和捡瓶子的功能,一个瓶子只能被捡到一次,阅读完就置状态位, ...
- Node.js模拟发起http请求从异步转同步的5种方法
使用Node.js模拟发起http请求很常用的,但是由于Node模块(原生和第三方库)提供里面的方法都是异步,对于很多场景下应用很麻烦,不如同步来的方便.下面总结了几个常见的库API从异步转同步的几种 ...
- node.js模拟学校教务处登录
临近毕业,在做毕设,我的毕设中有一个功能是模拟我学校的教务处登录以获得cookie,本来以为是挺简单的一个功能,但却花了我两天的时间.(我学校教务处用的是湖南强智科技开发的) 在网上搜了大量的模拟登录 ...
- Node.js使用Nodemailer发送邮件
除了Python,在node中收发电子邮件也非常简单,因为强大的社区有各种各样的包可以供我么直接使用.Nodemailer包就可以帮助我们快速实现发送邮件的功能. Nodemailer简介 Nodem ...
- 腾讯云短信服务+Node.js给手机发送验证码
最近公司需要些一个登陆验证和修改密码验证,需要用到验证码,我用Node.js写了一个给手机发验证码的代码,下面实现的功能有:生产验证码,(计时器)验证码失效时间,给手机发送短信. 首先看官方文档,在给 ...
- 用Node.js给邮箱发送邮件
首先我们需要做的是下载发送邮件的包 cnpm install nodemailer --save 然后写发送邮件的代码,代码如下: 实现原理是:用你的邮箱给其他邮箱发送邮件,所以这里需要填写你的邮箱和 ...
- js模拟自动点击事件
1.直接上代码很直观 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- 用node.js模拟服务器和客户端
服务器 代码 var net = require("net") var server = net.createServer(); server.listen(12306," ...
- 【VS Code】中node.js代码自动补全的方法
原文链接: https://blog.csdn.net/qq_39189819/article/details/91347484
随机推荐
- 0.9循环=lim(n趋于无穷大)(1-1/10的n次方),所以这是一个极限问题
0.9循环=lim(n趋于无穷大)(1-1/10的n次方),所以这是一个极限问题 因为lim(...)(1-1/10的n次方)=1 这意味着维尔斯特拉斯发明极限定义之前,这个等号是不成立的,因为没有极 ...
- python自带函数
callable() #是否可以被执行,是否可以被调用 chr() #返回整数i对应的ASCII字符.与ord()作用相反.参数x:取值范围[0, 255]之间的正数. ord() #参数是一个asc ...
- 使用vuex做列表数据过滤
功能需求 展示一个表格,表格包含选项有" 姓名 年龄 是否显示"三个列表项 是否显示列表项是可操作开关,点击切换打开/关闭 将表格中开关为打开状态的列表项,在另一个表格中显示 需求 ...
- 算法数据结构 | 只要30行代码,实现快速匹配字符串的KMP算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法数据结构专题的第29篇文章,我们来聊一个新的字符串匹配算法--KMP. KMP这个名字不是视频播放器,更不是看毛片,它其实是由Kn ...
- Python访问列表中的值
Python访问列表中的值: 列表中可以包含所有数据类型: # 列表中可以存放 数字数据类型数据 # int 型数据 lst = [1,2,3] print(lst) # [1, 2, 3] # fl ...
- 【保姆级教学】新手第一次搭建vue项目和初始化
前端项目初始化步骤 安装vue脚手架 通过vue脚手架创建项目 配置vue路由 配置Element-UI组件库 配置axios库 初始化git远程仓库 将本地项目托管到github或者码云上 通过vu ...
- 7.1 NOI模拟赛 凸包套凸包 floyd 计算几何
计算几何之所以难学 就是因为太抽象了 不够直观 而且情况很多 很繁琐 甚至有一些东西不清不楚.. 这道题注意到题目中的描述 一个鸽子在两个点所连直线上也算. 通过看题解 发现这个地方并非直线而是线段 ...
- Hadoop学习之第一个MapReduce程序
期望 通过这个mapreduce程序了解mapreduce程序执行的流程,着重从程序解执行的打印信息中提炼出有用信息. 执行前 程序代码 程序代码基本上是<hadoop权威指南>上原封不动 ...
- Lucas(卢卡斯)定理
公式 $$C_n^m\%p=C_{n/p}^{m/p}*C_{n\%p}^{m\%p}\%p~~(p为素数)$$ 代码如下 typedef long long ll; ll mod_pow(ll x, ...
- Centos xrdp 远程连接后突然闪退
问题描述: 可以进入登录页面,但是输入用户名,密码后,直接闪退. 查看 该用户名 ~/.xsession-errors imsettings-check: ): IMSettings-WARNING ...