基于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 相关文章推荐
JS简单实现多级Select联动菜单效果代码
Sep 06 Javascript
javascript实现消灭星星小游戏简单版
Nov 15 Javascript
移动端js图片查看器
Nov 17 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
Mar 08 Javascript
JS控件bootstrap suggest plugin使用方法详解
Mar 25 Javascript
javascript 跨域问题以及解决办法
Jul 17 Javascript
JavaScript生成简单等差数列
Nov 28 Javascript
原生JS实现瀑布流插件
Feb 06 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
vue中利用Promise封装jsonp并调取数据
Jun 18 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 Javascript
Js数组扁平化实现方法代码总汇
Nov 11 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
header导出Excel应用示例
2014/01/24 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
web页面数据展示新想法(json)
2010/06/08 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
医大实习自我鉴定
2013/12/07 职场文书
学校门卫岗位职责
2014/03/16 职场文书
学校消防安全责任书
2014/07/23 职场文书
销售活动策划方案
2014/08/26 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
golang为什么要统一错误处理
2022/04/03 Golang
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript