基于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 相关文章推荐
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
jquery 鼠标滑动显示详情应用示例
Jan 24 Javascript
jQuery中each()方法用法实例
Dec 27 Javascript
js实现类似MSN提示的页面效果代码分享
Aug 24 Javascript
JavaScript如何获取数组最大值和最小值
Nov 18 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
Mar 08 Javascript
基于input框覆盖掉数字英文的实例讲解
Jul 21 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
Vue 3.0双向绑定原理的实现方法
Oct 23 Javascript
使用JavaScript计算前一天和后一天的思路详解
Dec 20 Javascript
vue 授权获取微信openId操作
Nov 13 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
这段js代码得节约你多少时间
2011/12/20 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
Python时间获取及转换知识汇总
2017/01/11 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
舞蹈教师自荐信
2014/01/27 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python
详解Python为什么不用设计模式
2021/06/24 Python