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 相关文章推荐
一段利用WSH获取登录时间的jscript代码
May 11 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
Aug 11 Javascript
js 自动播放的实例代码
Nov 19 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
jQuery 处理页面的事件详解
Jan 20 Javascript
JavaScript 变量、作用域及内存
Apr 08 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
js实现多行文本框统计剩余字数功能
Mar 28 Javascript
JS扩展String.prototype.format字符串拼接的功能
Mar 09 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
May 10 Javascript
react合成事件与原生事件的相关理解
May 13 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
php下通过POST还是GET来传值
2008/06/05 PHP
PHP插入排序实现代码
2013/04/04 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
不懂JavaScript应该怎样学
2008/04/16 Javascript
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
使用jQuery判断IE浏览器版本的代码
2014/06/14 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
Python functools模块学习总结
2015/05/09 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
化工操作工岗位职责
2014/04/29 职场文书
法学自荐信
2014/06/20 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
先进个人材料怎么写
2014/12/30 职场文书
技术入股合作协议书
2016/03/21 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers