在平时开发中,我们经常需要获取验证码来验证身份,有很多方式可以获取,大多数都需要收费,这里推荐一个免费获取验证码发送的方式。
使用163免费邮箱获取授权码
打开https://mail.163.com/登录你的163邮箱,然后点击上方的设置
![](https://img-blog.csdnimg.cn/img_convert/db681d140c2695a700e946980dca36c2.png)
开通POP3/SMTP/IMAP服务
![](https://img-blog.csdnimg.cn/img_convert/07038fe5c39c50d93ccfaa2b8ceb1d96.png)
![](https://img-blog.csdnimg.cn/img_convert/c64ca42ae0bbd239046af7df4b30c529.png)
使用注册时的手机号发送短信
![](https://img-blog.csdnimg.cn/img_convert/e72abf7f7d806dddfe40bc632832a292.png)
发送后点击我已发送,就可以得到授权码了
![](https://img-blog.csdnimg.cn/img_convert/9e6a764e1e236890be55750b0cd1641a.png)
注意:一定要在这个页面保存好这个授权码,后面查不到的!!!
下载nodemailer
//下载
npm i nodemailer -S
//引入
const nodemailer = require("nodemailer");
//配置信息
const transporter = nodemailer.createTransport({
service: '163', // 邮箱
secure: true, // 安全的发送模式
auth:{
user: 'XXXX@163.com', // 发件人邮箱(第一步的邮箱)
pass: 'XXXXXXXXXXXXXXXXXX' // 授权码 (第一步获取到的授权码)
}
});
// 发送邮件到指定邮箱
transporter.sendMail({
from:"XXX<XXXX@163.com>", //前面可以写发件人名字后面的邮箱配置为上方的邮箱地址
subject: '验证码', //邮件标题
to:`${req.body.email}`, //配置目标邮箱,可以从前端传来的数据中获取
text:`您的验证码是:${verifyCode} , 有效期一分钟 , 如非本人操作 , 请忽略`, //邮件内容一般是发送验证码
},(err,data)=>{
if (err) {
console.log(err);
}
else{
console.log(data);
}
})
使用string-random生成随机字符串
//下载
npm i string-random -S
//引入
const random = require('string-random');
//使用
random([length],[options]) //length代表字符串长度 options配置项
console.log(random()); //jcBvYzfa
console.log(random(16)); //d9oq0A3vooaDod8X
console.log(random(16, {numbers: false})); //AgfPTKheCgMvwNqX
console.log(random(16, {letters: false})); //0889014544916637
console.log(random(16, {letters: 'ABCDEFG'})); //055B1627E43GA7D8
console.log(random(16, {specials: true})); //,o=8l{iay>AOegW[
console.log(random(16, {specials: true, numbers: false, letters: false})); //)-[+$^%+$|)-{(]%
console.log(random(16, {specials: ':;', numbers: false, letters: false})); //:;:;;;:;;;;;;;::
console.log(random(16, true)); //SMm,EjETKMldIM/J
最后附上完整代码
const nodemailer = require("nodemailer"); //引入邮件模块
const random = require('string-random'); //引入随机字符串模块
const transporter = nodemailer.createTransport({
service: '163', // 邮箱
secure: true, // 安全的发送模式
auth:{
user: 'XXXX@163.com', // 发件人邮箱
pass: 'XXXXXXXXXXX' // 授权码
}
});
let verifyCode = random(6,{letters:false})
transporter.sendMail(
{
// 发件人邮箱
from: 'XXX<XXXXXXXXX@163.com>',
// 邮件标题
subject: '验证码',
// 目标邮箱
to: `${req.body.email}`,
// 邮件内容
text: `您的验证码是:${verifyCode} , 有效期一分钟 , 如非本人操作 , 请忽略`
},
(err, data) => {
if (err) {
console.error(err);
}
else{
console.log(data);
}
}
);