Node.js发送电子邮件
电子邮件作为最广泛使用的一种网络服务和我们的工作学习生活已经密不可分。接受信用卡的账单,注册网站,找回密码等等都需要用到它。今天在就来学习下如何在node下来发送邮件,为当前做的项目提供邮箱校验的功能。
邮箱校验的原理:当我们在xxx网站注册的时候,注册信息中一般都会要求你填一个邮箱(作用:1、当着登录的用户账号,2、找回密码),当你注册成功后系统就会向你填写的邮箱中发送一封带有特殊链接的邮件,要求你打开你的邮件去点击,当你进入邮箱点击连接系统就会接受到一个get请求从而验证邮箱是你本人的。
node发送邮件已经有一些第三方的组件,这里我使用nodemailer这个带三方组件来发邮件,如果不使用封装好的第三方组件自己写的话需要去熟悉和研究复杂的邮件协议来实现,如果要开发一个邮件服务那么这是必要的,但是一个小小的邮件验证我觉得这是非必要的。
创建本次邮箱校验demo使用的数据库的表
DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`username` varchar(20) NOT NULL COMMENT '用户名',
`password` varchar(255) NOT NULL COMMENT '用户密码',
`email` varchar(255) NOT NULL COMMENT '邮箱',
`code` varchar(255) NOT NULL COMMENT '邮箱验证使用的code',
`email_state` int(2) NOT NULL COMMENT '邮箱验证状态。 0:未验证,1:已验证',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这就是本次邮箱校验demo中用到的用户信息表,其实还应该有一张表存放每次发送邮箱验证时候生成的一些数据,比如code,过期时间等,在这里我就不校验邮件的过期时间了,code也直接放在用户信息表中了,如果你在正式系统中请新建一张表或者在缓存中来存放每次发送邮件生成的临时数据。
nodemailer介绍及其使用
特性列表
- 不依赖于其它模块
- 支持unicode编码,包括emoji表情
- 支持windows系统
- 邮件内容支持纯文本和html
- 支持添加附件
- 邮件内容如果是html还可以插入图片
- 支持除了默认SMTP协议外的其它传输协议
- 使用TLS / STARTTLS安全电子邮件传递
- SMTP连接代理
- 健全的oauth2认证
- DKIM消息签名
- 自定义插件支持处理消息
- 支持es6语法
详细文档nodemailer官方地址
nodemailer配置
通过npm install nodemailer --save安装这个模块到项目。当前的nodemailer的版本是4.0.1
nodemailer使用
使用nodemailer发送一封邮件大概需要4步
1、在文件中引入nodemailer
const nodemailer = require('nodemailer');
2、创建一个传输对象
let transporter = nodemailer.createTransport({
host: 'smtp.163.com',
port: 465,
secure: true,
auth: {
user: 'username@163.com', //邮箱的账号
pass: 'userpass'//邮箱的密码
}
});
3、设置电子邮件
let mailOptions = {
from: '"Fred Foo
Node.js发送电子邮件的更多相关文章
- Node.js 发送Email
章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...
- node.js 发送http 请求
自己研究了一下 node.js 的 http模块 下面为想服务器发送请求的代码 ,通过学习了解http 请求的过程 ,node.js 对http请求的原始封装比较低,以前php 可以用$_GET , ...
- Node.js 0.12: 正确发送HTTP POST请求
Node.js 0.12: 正确发送HTTP POST请求 本文针对版本:Node.js 0.12.4 之前写过一篇Node.js发送和接收HTTP的GET请求的文章,今天再写一篇,讲发送POST的请 ...
- 使用Node.js实现数据推送
业务场景:后端更新数据推送到客户端(Java部分使用Tomcat服务器). 后端推送数据的解决方案有很多,比如轮询.Comet.WebSocket. 1. 轮询对于后端来说开发成本最低,就是按照传统的 ...
- 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡
原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...
- 如何更好的利用Node.js的性能极限
通过使用非阻塞.事件驱动的I/O操作,Node.js为构建和运行大规模网络应用及服务提供了很好的平台,也受到了广泛的欢迎.其主要特性表现为能够处理庞大的并且高吞吐量的并发连接,从而构建高性能.高扩展性 ...
- node.js 微信开发2-消息回复、token获取、自定义菜单
项目结构 >config/wechat.json 微信公众号的配置文件 >controllers/oauth.js 微信网页授权接口(下一篇再细讲讲) >controllers/we ...
- Node.js 文件系统模块
章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...
- Node.js 介绍
章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...
随机推荐
- Java Web开发中的转发和重定向的问题
Java Web的页面实现跳转有两种方式,一种是转发,另外一种是重定向.一般来说,转发比重定向快.重定向会经过客户端,转发却不会. 转发 request.getRequestDispatcher(&q ...
- 微信小程序开发常见之坑
https://www.cnblogs.com/shunxing/articles/6971648.html input里的value会在浮层上面的,要解决这一问题还是很简单的,在小程序中input有 ...
- mac安装软件提示没有权限
Mac 安装软件基本是各种爽,自动更新啥. 但是有一种提示没有权限的错误,很不爽,还要sudo管理员权限 有一个修复 /usr/local目录权限的命令 sudo chown -R 'whoami' ...
- Java和C# RSA加解密相互通信和使用公钥加密传输
关于JAVA和C#加解密通讯的话,可以用这个BouncyCastle插件,会帮助你解决很多问题 http://www.bouncycastle.org/ //c#使用java给的公钥进行rsa加密 p ...
- 初识Spark程序
执行第一个spark程序 普通模式提交任务: bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark ...
- 机器学习入门KNN近邻算法(一)
1 机器学习处理流程: 2 机器学习分类: 有监督学习 主要用于决策支持,它利用有标识的历史数据进行训练,以实现对新数据的表示的预测 1 分类 分类计数预测的数据对象是离散的.如短信是否为垃圾短信,用 ...
- [翻译] TWRPickerSlider
TWRPickerSlider https://github.com/chasseurmic/TWRPickerSlider Usage Add the dependency to your Podf ...
- 用POP动画模拟真实秒钟摆动效果
用POP动画模拟真实秒钟摆动效果 静态图: 动画图: 此处用到了POP中的Spring系列动画,现提供源码如下: SecondClockView.h 与 SecondClockView.m // // ...
- xgcom linux下的串口助手
好用到爆@@! 2.Install: Source code: http://code.google.com/p/xgcom/ svn checkout http://xgcom.googlecode ...
- Mac Sublime Text 3
安装Package Control安装过程: 使用快捷键 control + ` 或者菜单栏选择View > Show Console安装Package Control参考官方页面.Sublim ...