node.js使用nodemailer发送邮件实例


Posted in Javascript onMarch 10, 2014

一、安装 nodemailer

npm install nodemailer --save

二、调用
var nodemailer = require("nodemailer");
// 开启一个 SMTP 连接池
var smtpTransport = nodemailer.createTransport("SMTP",{
  host: "smtp.qq.com", // 主机
  secureConnection: true, // 使用 SSL
  port: 465, // SMTP 端口
  auth: {
    user: "xxxxxxxx@qq.com", // 账号
    pass: "xxxxxxxx" // 密码
  }
});
// 设置邮件内容
var mailOptions = {
  from: "Fred Foo <xxxxxxxx@qq.com>", // 发件地址
  to: "2838890xx@qq.com, minimixx@126.com", // 收件列表
  subject: "Hello world", // 标题
  html: "<b>thanks a for visiting!</b> 世界,你好!" // html 内容
}
// 发送邮件
smtpTransport.sendMail(mailOptions, function(error, response){
  if(error){
    console.log(error);
  }else{
    console.log("Message sent: " + response.message);
  }
  smtpTransport.close(); // 如果没用,关闭连接池
});

三、常见错误
{ [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的$.cookie()实现跨越页面tabs导航实现代码
Mar 03 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
Mar 05 Javascript
jQuery如何防止这种冒泡事件发生
Feb 27 Javascript
jquery实现全屏滚动
Dec 28 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
Mar 22 Javascript
jQuery添加和删除输入文本框标签代码
May 20 Javascript
Bootstrap常用组件学习(整理)
Mar 24 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
使用JS location实现搜索框历史记录功能
Dec 23 Javascript
Vue解决echart在element的tab切换时显示不正确问题
Aug 03 Javascript
javascript全局自定义鼠标右键菜单
Dec 08 Javascript
JavaScript实现简单计时器
Jun 22 Javascript
php中给js数组赋值方法
Mar 10 #Javascript
javascript操作referer详细解析
Mar 10 #Javascript
JS数组的赋值介绍
Mar 10 #Javascript
JS删除字符串中重复字符方法
Mar 09 #Javascript
用JavaScript实现类似于ListBox功能示例代码
Mar 09 #Javascript
jquery下div 的resize事件示例代码
Mar 09 #Javascript
现如今最流行的JavaScript代码规范
Mar 08 #Javascript
You might like
虫族 Zerg 热键控制
2020/03/14 星际争霸
php array的学习笔记
2012/05/10 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
详解jQuery事件
2017/01/13 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
Python与Redis的连接教程
2015/04/22 Python
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
Python中字典映射类型的学习教程
2015/08/20 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
Python 中Pickle库的使用详解
2018/02/24 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python无损压缩图片的示例代码
2020/08/06 Python
端口镜像是怎么实现的
2014/03/25 面试题
打架检讨书100字
2014/01/19 职场文书
作风建设剖析材料
2014/10/06 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
合作合同协议书
2016/03/21 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js