Node.js使用NodeMailer发送邮件实例代码


Posted in Javascript onMarch 06, 2017

0.目标

这一节,我将实现一个简单的发送邮件功能。

1.部署

1.1 部署Express

如果不知道如何部署,可参照:部署Express

1.2 准备一个邮箱并开始SMTP服务

为了实现这个功能,你首先要有一个邮箱;由于需要使用SMTP方式发送,你还需要开启相关功能。你可以登录你的邮箱,然后开启这个设置,以新浪邮箱和QQ邮箱为例:

Node.js使用NodeMailer发送邮件实例代码

Node.js使用NodeMailer发送邮件实例代码

2.服务器端

2.1 使用nodemailer

这里要用到nodemailer,需要自行安装:

npm install nodemailer --save

在routes/index.js中引用nodemailer:

var multer = require('nodemailer');

2.2 配置

在routes/index.js中创建一个传输方式:

var mailTransport = nodemailer.createTransport({
  host : 'smtp.sina.com',
  secureConnection: true, // 使用SSL方式(安全方式,防止被窃取信息)
  auth : {
    user : '你的邮箱地址',
    pass : '你的邮箱密码'
  },
});

注意,低版本的nodemailer可能需要多传入一个参数“SMTP”:

var mailTransport = nodemailer.createTransport('SMTP', {
  host : 'smtp.sina.com',
  secureConnection: true, // use SSL
  auth : {
    user : '你的邮箱地址',
    pass : '你的邮箱密码'
  },
});

2.3 发送邮件

/* 浏览器输入地址(如127.0.0.1:3000/sned)后即发送 */
router.get('/send', function(req, res, next) {
  var options = {
    from      : '"你的名字" <你的邮箱地址>',
    to       : '"用户1" <邮箱地址1>, "用户2" <邮箱地址2>',
    // cc     : ''  //抄送
    // bcc     : ''  //密送
    subject    : '一封来自Node Mailer的邮件',
    text      : '一封来自Node Mailer的邮件',
    html      : '<h1>你好,这是一封来自NodeMailer的邮件!</h1><p><img src="cid:00000001"/></p>',
    attachments  : 
          [
            {
              filename: 'img1.png',      // 改成你的附件名
              path: 'public/images/img1.png', // 改成你的附件路径
              cid : '00000001'         // cid可被邮件使用
            },
            {
              filename: 'img2.png',      // 改成你的附件名
              path: 'public/images/img2.png', // 改成你的附件路径
              cid : '00000002'         // cid可被邮件使用
            },
          ]
  };

  mailTransport.sendMail(options, function(err, msg){
    if(err){
      console.log(err);
      res.render('index', { title: err });
    }
    else {
      console.log(msg);
      res.render('index', { title: "已接收:"+msg.accepted});
    }
  });
});

如果你要发送附件,则先把要发送的文件放入工程中,并修改上面代码的附件的filename和path。

从代码中可以知道,要在邮件正文中添加图片,可以设置图片的cid,然后在img标签的src中设置为对应的cid即可。

注意,不建议在js代码中直接嵌入HTML代码,也不建议把图片加到邮件正文中。

3.测试

浏览器输入地址(如127.0.0.1:3000/sned)。

发送等待的时间视附件大小及网络带宽等因素不同,如果有一个很大的附件要发送,可能会等待很长时间;所以,建议在测试的时候使用小文件。

如果发送成功,会给出提示:

Node.js使用NodeMailer发送邮件实例代码

并在邮箱里收到相应的邮件:

Node.js使用NodeMailer发送邮件实例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery EasyUI 开源插件套装 完全替代ExtJS
Mar 24 Javascript
jquery 根据name名获取元素的value值
Feb 27 Javascript
JQuery+CSS实现图片上放置按钮的方法
May 29 Javascript
实例讲解jquery中mouseleave和mouseout的区别
Feb 17 Javascript
全屏js头像上传插件源码高清版
Mar 29 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
Jan 12 Javascript
微信小程序CSS3动画下拉菜单效果
Nov 04 Javascript
JS原型prototype和__proto__用法实例分析
Mar 14 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 Javascript
Vue 组件复用多次自定义参数操作
Jul 27 Javascript
解决vue打包报错Unexpected token: punc的问题
Oct 24 Javascript
linux服务器快速卸载安装node环境(简单上手)
Feb 22 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 #Javascript
js实现4个方向滚动的球
Mar 06 #Javascript
Bootstrap输入框组件简单实现代码
Mar 06 #Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 #Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 #Javascript
Bootstrap表单简单实现代码
Mar 06 #Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
Mar 06 #Javascript
You might like
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
python实现发送邮件及附件功能
2021/03/02 Python
带你了解python装饰器
2017/06/15 Python
python读取几个G的csv文件方法
2019/01/07 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
Python常用数据分析模块原理解析
2020/07/20 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
python解包用法详解
2021/02/17 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
医院后勤自我鉴定
2013/10/13 职场文书
建筑人员岗位职责
2013/12/25 职场文书
教师评优事迹材料
2014/01/10 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
产品生产计划书
2014/05/07 职场文书
财务经理岗位职责
2015/01/31 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python
使用Redis实现分布式锁的方法
2022/06/16 Redis