电子邮件作为最广泛使用的一种网络服务和我们的工作学习生活已经密不可分。接受信用卡的账单,注册网站,找回密码等等都需要用到它。今天在就来学习下如何在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. 利用dotnet restore 导入本地 .nupkg 包

    dotnet restore 主要是用于部署.net core 项目中所需的依赖库,集成了nuget包管理软件.因此,dotnet restore 实际上就是根据project.json(今后可能为p ...

  2. 用Appium让Android功能自动化测试飞起来

    前言 做Android端功能自动化已有2年多的时间了,使用过的功能自动化框架有Robotium.Uiautomator.Appium.最近研究自动化case复用的方案,调研了Appium的自动化框架, ...

  3. Software Testing Techniques Homework 2

    Problem 1 1. The fault is i > 0, it should be  i >= 0, because if the case is x = [0], y= 0, w ...

  4. asp.net生成PDF文件参考 .

    TextSharp 是用来生成  PDF 的一个组件,在 1998 年夏天的时候,Bruno Lowagie ,iText 的创作者,参与了学校的一个项目,当时使用 HTML 来生成报告,但是,使用 ...

  5. 运维url收集

    https://www.centos.bz/tag/nagios/ Graphite的百万Metrics实践之路 饿了么 Influxdb 实践之路

  6. [翻译] SVProgressHUD

    SVProgressHUD https://github.com/TransitApp/SVProgressHUD SVProgressHUD is a clean and easy-to-use H ...

  7. exchange 普通用户可以创建通讯组

    运维发现,通讯组多了好多未知名称的,经查为普通用户通过owa新建的,怎么阻止用户新建通讯组呢. 在搭建exchange后,系统会自动创建一个“Default Role Assignment Polic ...

  8. 添加PHP扩展模块

    php安装好后,可能在初次安装时,会有些模块会有遗漏,但是我们又不想重新编译php,因为耗时是比较长的.我们可不可以在不重新编译安装php的情况下,来为php单独添加某一个模块呢?查找资料,发现还是有 ...

  9. laravel with嵌套的渴求式加载

    今天在通过需求表A查询场地类型表B,然后通过表B的场地类型id去查询表C场地类型名的时候遇到了一个小的问题. 需求表A的字段:id.user_id .name等等: 中间表B的字段:id.appeal ...

  10. 3、NPM使用

    内容:NPM介绍,安装web框架模块,一些基本命令 #####介绍NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:    • 允许用户从 ...