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 相关文章推荐
简明json介绍
Sep 28 Javascript
JavaScript 基础问答三
Dec 03 Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 Javascript
纯JS实现旋转图片3D展示效果
Apr 12 Javascript
JSON 必知必会 观后记
Oct 27 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
Angular中的interceptors拦截器
Jun 25 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
Angular中点击li标签实现更改颜色的核心代码
Dec 08 Javascript
官方推荐react-navigation的具体使用详解
May 08 Javascript
聊聊JS ES6中的解构
Apr 29 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 数组实例说明
2008/08/18 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
PHP实现的简单缓存类
2015/07/29 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
JQuery基础语法小结
2015/02/27 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python中类的初始化特殊方法
2017/12/01 Python
python中的decorator的作用详解
2018/07/26 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
留学自荐信的技巧
2013/10/17 职场文书
后勤主管岗位职责
2014/03/01 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
2015年资料员工作总结
2015/04/25 职场文书
学校推普周活动总结
2015/05/07 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python