基于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 相关文章推荐
JavaScript window.setTimeout() 的详细用法
Nov 04 Javascript
基于jquery的图片懒加载js
Jun 30 Javascript
javascript的数据类型、字面量、变量介绍
May 23 Javascript
JavaScript中instanceof运算符的用法总结
Nov 19 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
Oct 27 Javascript
jQuery异步提交表单的两种方式
Sep 13 Javascript
jQuery上传多张图片带进度条样式(DEMO)
Mar 02 Javascript
Vue键盘事件用法总结
Apr 18 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
Nov 23 Javascript
详解bootstrap导航栏.nav与.navbar区别
Nov 23 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循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
css图片自适应大小
2007/11/28 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
jquery操作angularjs对象
2015/06/26 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
pygame播放音乐的方法
2015/05/19 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python中is与==判断的区别
2017/03/28 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
python中time包实例详解
2021/02/02 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
自主招生自荐信范文
2013/12/04 职场文书
学年末自我鉴定
2014/01/21 职场文书
律师函格式范本
2015/05/27 职场文书
新闻稿标题
2015/07/18 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python