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 相关文章推荐
Javascript中的常见排序算法
Mar 27 Javascript
JavaScript Timer实现代码
Feb 17 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
JS实现文件动态顺序载入的方法
Mar 07 Javascript
javascript实时显示北京时间的方法
Mar 12 Javascript
JavaScript设计模式学习之“类式继承”
Mar 12 Javascript
javascript实现拖动元素交换位置
Nov 29 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
原生JS实现图片左右轮播
Dec 30 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 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 和 MySQL 基础教程(二)
2006/10/09 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
joomla数据库操作示例代码
2016/01/06 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
php中上传文件的的解决方案
2018/09/25 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
js URL参数的拼接方法比较
2012/02/15 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
js实现二级联动简单实例
2020/01/11 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
Python中非常实用的一些功能和函数分享
2015/02/14 Python
简述Python2与Python3的不同点
2018/01/21 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
python颜色随机生成器的实例代码
2020/01/10 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
村级个人对照检查材料
2014/08/22 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
Python List remove()实例用法详解
2021/08/02 Python