电子邮件作为最广泛使用的一种网络服务和我们的工作学习生活已经密不可分。接受信用卡的账单,注册网站,找回密码等等都需要用到它。今天在就来学习下如何在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发送电子邮件的更多相关文章

  1. Node.js 发送Email

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...

  2. node.js 发送http 请求

    自己研究了一下 node.js 的 http模块  下面为想服务器发送请求的代码 ,通过学习了解http 请求的过程 ,node.js 对http请求的原始封装比较低,以前php 可以用$_GET , ...

  3. Node.js 0.12: 正确发送HTTP POST请求

    Node.js 0.12: 正确发送HTTP POST请求 本文针对版本:Node.js 0.12.4 之前写过一篇Node.js发送和接收HTTP的GET请求的文章,今天再写一篇,讲发送POST的请 ...

  4. 使用Node.js实现数据推送

    业务场景:后端更新数据推送到客户端(Java部分使用Tomcat服务器). 后端推送数据的解决方案有很多,比如轮询.Comet.WebSocket. 1. 轮询对于后端来说开发成本最低,就是按照传统的 ...

  5. 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡

    原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...

  6. 如何更好的利用Node.js的性能极限

    通过使用非阻塞.事件驱动的I/O操作,Node.js为构建和运行大规模网络应用及服务提供了很好的平台,也受到了广泛的欢迎.其主要特性表现为能够处理庞大的并且高吞吐量的并发连接,从而构建高性能.高扩展性 ...

  7. node.js 微信开发2-消息回复、token获取、自定义菜单

    项目结构 >config/wechat.json 微信公众号的配置文件 >controllers/oauth.js 微信网页授权接口(下一篇再细讲讲) >controllers/we ...

  8. Node.js 文件系统模块

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...

  9. Node.js 介绍

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...

随机推荐

  1. javascript 字面量

    https://www.cnblogs.com/radius/p/6874165.html

  2. listview的pushBackDefaultItem中的item属性被修改问题

    time:2015/05/04 1. 描述 在cocostudio中有两个控件,一个listview,另外一个是隐藏的imageview,其中后者作为listview的元素.每次使用的时候把Image ...

  3. Asp.net core 项目实战 新闻网站+后台 源码、设计原理 、视频教程

    首先说明,视频教程.源码并非本人原创 本人将项目分割开,并写了一些说明. 该视频教程 地址  https://study.163.com/course/courseMain.htm?courseId= ...

  4. 记录c++本地文件读取组装

    class ErrorCodeConfig{ public: ErrorCodeConfig(){} ErrorCodeConfig(const ErrorCodeConfig&)=delet ...

  5. 使用python 操作liunx的svn,方案一

    在服务器中要做几个操作,使用命令操作svn,svn文件的创建,svn文件更新,并把指定demo路径,移动到创建的文件夹中,进行提交, # -*- coding:utf-8 -*- import pys ...

  6. Maven经常使用命令

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/UP19910522/article/details/25985021 Maven库: http:// ...

  7. 【jQuery mobile】启程跨平台开发之旅

    APICloud创建跨平台应用有两种方法,一种在云端直接创建,一种是在APICloud Studio中创建. 创建一个应用 1.注册账号 2.创建HelloApp应用 3.留意应用的ID . 4.下载 ...

  8. PyTorch Notes | PyTorch 编程实践笔记

    [ 今天最开心的事情! ] PyTorch的stable版本更新为1.0之后,原本3D模型无脑out of memory.3D模型torch.backends.cudnn.benchmark必须Fal ...

  9. disconf实践(二)基于XML的分布式配置文件管理,不会自动reload

    上一篇博文介绍了disconf web的搭建流程,这一篇就介绍disconf client通过配置xml文件来获取disconf管理端的配置信息. 1. 登录管理端,并新建APP,然后上传配置文件 2 ...

  10. HDU 3938 Portal (离线并查集,此题思路很强!!!,得到所谓的距离很巧妙)

    Portal Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...