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中继承的三种方式
Oct 16 Javascript
Javascript实现的类似Google的Div拖动效果代码
Aug 09 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
纯JS焦点图特效实例(可一个页面多用)
Dec 07 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 Javascript
JS回调函数深入理解
Oct 16 Javascript
VUE.CLI4.0配置多页面入口的实现
Nov 25 Javascript
浅析VUE防抖与节流
Nov 24 Vue.js
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
Protoss兵种对照表
2020/03/14 星际争霸
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
header跳转和include包含问题详解
2012/09/08 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
在python image 中安装中文字体的实现方法
2019/08/22 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
Django设置Postgresql的操作
2020/05/14 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
常见的软件开发流程有哪些
2015/11/14 面试题
机电专业个人自荐信格式模板
2013/09/23 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
九年级历史教学反思
2014/01/27 职场文书
安全宣传标语
2014/06/10 职场文书
信访工作个人总结
2015/03/03 职场文书
开学典礼致辞
2015/07/29 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫