基于Node.js实现nodemailer邮件发送


Posted in Javascript onJanuary 26, 2016

Nodemailer是一个简单易用的Node.js邮件发送组件,具体操作如下

1、安装nodemailer

npm install nodemailer --save

2、特点

Nodemailer的主要特点包括:

  • 支持Unicode编码
  • 支持Window系统环境
  • 支持HTML内容和普通文本内容
  • 支持附件(传送大附件)
  • 支持HTML内容中嵌入图片
  • 支持SSL/STARTTLS安全的邮件发送
  • 支持内置的transport方法和其他插件实现的transport方法
  • 支持自定义插件处理消息
  • 支持XOAUTH2登录验证

以上的功能特点,已经覆盖了大部分的发邮件的需求了,接下来就让我们动手开始写程序吧。

3、简单示例

这是一个完整的例子来发送电子邮件以明文和HTML本体

var nodemailer = require('nodemailer');

// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com');

// setup e-mail data with unicode symbols
var mailOptions = {
  from: 'Fred Foo ? <foo@blurdybloop.com>', // sender address
  to: 'bar@blurdybloop.com, baz@blurdybloop.com', // list of receivers
  subject: 'Hello ✔', // Subject line
  text: 'Hello world ?', // plaintext body
  html: '<b>Hello world ?</b>' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
  if(error){
    return console.log(error);
  }
  console.log('Message sent: ' + info.response);
});

4、常见错误

{ [AuthError: Invalid login - 454 Authentication failed, please open smtp flag first!]
 name: 'AuthError',
 data: '454 Authentication failed, please open smtp flag first!',
 stage: 'auth' }

错误原因: 账号未设置该服务
解决方案: QQ邮箱 -> 设置 -> 帐户 -> 开启服务:POP3/SMTP服务

{ [SenderError: Mail from command failed - 501 mail from address must be same as authorization user]
 name: 'SenderError',
 data: '501 mail from address must be same as authorization user',
 stage: 'mail' }

错误原因: 发件账号与认证账号不同,即用户名和密码不匹配。

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
javascript 隔行换色函数代码
Oct 24 Javascript
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
Jquery的each里用return true或false代替break或continue
May 21 Javascript
jQuery中:only-child选择器用法实例
Jan 03 Javascript
javascript拖拽应用实例(二)
Mar 25 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
深入剖析JavaScript面向对象编程
Jul 12 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
简化vuex的状态管理方案的方法
Jun 02 Javascript
Vuex中的Mutations的具体使用方法
Jun 01 Javascript
如何用JavaScript检测当前浏览器是无头浏览器
Apr 27 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 #Javascript
基于canvas实现的绚丽圆圈效果完整实例
Jan 26 #Javascript
基于canvas实现的钟摆效果完整实例
Jan 26 #Javascript
js实现的页面矩阵图形变换特效
Jan 26 #Javascript
JS实现简单的二维矩阵乘积运算
Jan 26 #Javascript
探究Javascript模板引擎mustache.js使用方法
Jan 26 #Javascript
jQuery Validation Plugin验证插件手动验证
Jan 26 #Javascript
You might like
用PHP和ACCESS写聊天室(七)
2006/10/09 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
js函数般调用正则
2008/04/08 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python生成器(Generator)详解
2015/04/13 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
企业管理部经理岗位职责
2013/12/24 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
教育学习自我评价
2014/02/03 职场文书
总经理人事任命书
2014/06/05 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
出售房屋委托书范本
2014/09/24 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
教师节倡议书2015
2015/04/27 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python