热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

node使用Nodemailer发送邮件,可用于登录注册的验证码哟

node使用Nodemailer发送邮件,可用于登录注册的验证码哟-在开发个人开源项目或者个人博客的时候,需要用户进行认证登录,首先我们想到的是手机验证码,但是在各大厂商验证码都需

在开发个人开源项目或者个人博客的时候,需要用户进行认证登录,首先我们想到的是手机验证码,但是在各大厂商验证码都需要收费,这时候我们可以用邮件进行发送验证码。主要是免费!


1.环境及Nodemailer安装介绍

我这边使用的是express,各位可以使用原生node 或者 koa都是可以的

安装

npm i nodemailer -S

邮箱权限申请流程

我这里拿QQ邮箱为例

1.开启SMTP服务

位置: 邮箱设置 -> 帐户 -> 往下滑,找到SMTP配置,如下图

点击开启,弹出

有令牌的可以使用手机令牌(QQ安全中心APP),没有的话只能花费0.1元发送短信开启啦。

开启之后生成一串的授权码,我们把它先复制起来

接下来进入代码模块


代码配置

引入nodemailer,并配置如下图

再来个send函数配置,详解都在注释里

发送回调


实战操作

按照如上配置, 写个接口

我这边只是随机生成四个数字,作为实验。

我们来到界面,进行操作

输入邮箱

打开邮箱查看效果

是不是很简单。


源码送上,加上邮件装饰布局哦

const nodemailer = require('nodemailer')
const obj = {
transporter: nodemailer.createTransport({
host: 'smtp.qq.com', // 默认是这个
port: 465,
auth: {
user: '你的邮箱',
pass: '你的邮箱授权码'
}
}),
send: function(mail, content) {
const mailOptiOns= {
// 发送方的邮箱地址
from: '注册验证码<你的邮箱>',
to: mail, // 对方邮箱
// cc : '' //抄送 用于多人邮件
// bcc : '' //密送
subject: '激活验证码',
text: `您的注册验证码为:${content}, 24小时内有效,请谨慎保管`,
html: `






















尊敬的用户:您好!

您正在进行ShanJDisc账号申请操作,请在验证码输入框中输入:${content},以完成操作。





注意:此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作,请及时登录并修改密码以保证帐户安全

(工作人员不会向你索取此验证码,请勿泄漏!)







此为系统邮件,请勿回复
请保管好您的邮箱,避免账号被他人盗用


ShanJDisc






`
}
this.transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error)
}
console.log('Message sent: %s', info.messageId)
})
}
}
// 抛出对象以接收
module.exports = obj

nodemailer 确实很实用,可以解决个人的开源项目登录注册,或者其他校验操作的验证码校验。本文章属于原创,需要转载请留言哦,如果你觉得这篇文章还阔以的话,请给个小赞赞,你的赞就是我发表文章的动力!




推荐阅读
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • python oj刷题网站_中小学计算机竞赛去哪里刷题?橙旭园OJ系统上线啦!
    原标题:中小学计算机竞赛去哪里刷题?橙旭园OJ系统上线啦!相信许多人在学习完编程之后都会茫然,感觉自己无所不能࿰ ... [详细]
  • ***Createdbyjiachenpanon161118.**合法uri*exportfunctionvalidateURL(textval){consturlregex^( ... [详细]
  • const限定符全解一、const修饰普通变量  intconsta500;  constinta600;  上述两种情况相同,都是声明一个const型的变量,它们 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
  • Iwanttointegratesort,order,maxandoffsetinafindAllquery.Thefollowingworksfine:我想在fin ... [详细]
  • QuestionThereareatotalofncoursesyouhavetotake,labeledfrom0ton-1.Somecoursesmayhaveprerequi ... [详细]
author-avatar
CCTV知府影
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有